要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码。
我一开始就准备等我一些原理篇总结完了,我就开始弄这个,毕竟这个里面涉及到的 SQL 注入知识很全,我贴一个下载地址:Sqli labs系列下载地址
对了还有我这个系列的头顶图,那个图是某个低调群的活跃用户装X墙,纯属装 X ,娱乐着玩了,大家别当真哈。
开了正文开始了!
首先我们先开始第一关,然后构造下注入环境,也就是在 http://127.0.0.1/sqli-labs-master/Less-1/ 这个后面加入 inderx.php?id=1 ,当然我们也可以直接加 ?id=1 因为变量就是 id =1 ,只要有变量就行。
下面开始添加 。
添加后,是不是就出来数据了,那么我们就可以开始构造注入语句了。
常规的,我先在 id=1 后面输入 and 1=1 来进行判断是否会显示正确。
结果很明显,显示正确,那我就开始输入 and 1=2 进行显错测试。
结果没有显错,我就开始纳闷了,我先构造了下,可能是的SQL语句。
然后我开始输入 ‘ 这个点符号,让它报错,我进行思考。
对于我一直玩这个来说,报错的一看,我就知道原因出在哪了,但是大家可能没看出来,那我就换个报错符号,用 \ 这个来代替 ‘ 。
我们把报错信息,复制到我们的新建文本里,进行分析。
看到这里,不知道大家能看出来不能,我先猜想一下,他的 SQL 语句应该是这样的。
关于后面的 line 1 这个就是个逐字查看的,我们先不分析这个,只分析如何才能注入。
好了我再把上面的那个报错的 SQL 语句给拆分下,这样大家都能直接看懂。
我在贴一个。
看出来了没?是不是参数被强制转成字符串?我们只要把这个 ‘ 给前后闭合了,不就可以进行查询了?
在这里,大家肯定想的是注释掉后面的不就行了?对了,注释掉就行。不过由于我是经常玩的,我就直接想开两个方法,一个是闭合,一个是注释。
第一个是闭合,第二个是 -- 注释,对了,两个杠后面必须有个空格才能起到注释的效果,不过我一般都是用 + 来替换空格, --+ ,就这样的注释。
好了我们开始测试第一个闭合法,看看行不行。
and 1=1 ,显示正确,那我再测试 and 1=2 。
好的,如我所想,报错了。
再测试下,注释法。
and 1=1 显示正常,再测试 and 1=2 。
显示错误了,那么这基本上就可以开始我的 SQL 注入大法了!
我要开始注入了!!!
首先先判断字段数,我一开始是用的 order by 这个查询的,结果查了100个了还不报错,那就说明这个失败了,我只能用 union select 这个方法查了,我查了一共有3个字段数。
然后我开始让它报错,在 union select 前面加上 and 1=2 ,促使它报错。
然后开始开始查询库名,版本号,用户。
用户。
库名。
版本号。
由于是5.0以上,我们可以直接查询。
我先把当前库名转码下。
然后开始爆出全部的表名。
我选中了 users 这个表名,继续转码。
然后开始爆该表名下的所有列名。
我直接选择了两个,开始直接爆数据。
结果啥都没出来,还报错了。。。。。。
然后我看到报错提示后,果断换 注释法,注释掉后面的。。。。
好了,成功爆出数据。
好了第一关,我过关了。
总结:
我知道我第一关写的很详细,不过60多光,我肯定是写不完了,我玩这个在没事的时候,玩玩,玩了我就直接写第二贴。还有如果对我下面的攻击语句有点陌生的话,可以查看本专栏下的 MySQL 数据库 SQL 注入攻击原理分析,进行学习。
地址: mysql注入篇