Less 34-37
Less 34 POST - Bypass AddSlashes()
这一关还是进行宽字节注入,与上一关的区别在于使用了post方法进行传递。
先试一下上一关的注入代码。因为这一关是登录,就使用之前的dumb账号。
dumb%df' union select 1,2,database() --+
登陆失败了,也没报错,看一下这个包传递时post方法里参数是咋传的。
可以看到,我们输入的注入代码在前端被进行了一个url编码,%
被编码成了%25
,原来的空格被替换成了+
,原来的+
被替换成了%2b
那我们再把这个包改回来就好,+
不用改回空格,在服务端会改回来的。并且经过尝试,这里union select
的列数为2。
注入成功。
Less 35 Get - Bypass Add Slashes (we dont need them) Integer based
这一关宽字节注入无效了,但是会返回错误信息,尝试使用报错注入。这一关是数值型注入,无需用'
或"
等进行闭合。
构造注入代码
1 and (extractvalue(1,concat(1,(select database())))) --+
从id
参数传入,注入成功。
Less 36 GET- Bypass MySQL_real_escape_string
这一关与32关类似,同样是使用宽字节注入,输入%df
让'
逃逸来使前面的'
得到闭合。
构造注入代码
-1%df' union select 1,2,database() --+
注入成功。
Less 37 POST-Bypass MySQL_real_escape_string
这一关与第34关类似,同样使用post方法的宽字节注入,并且同样需要拦截后对进行了url编码的内容修改后重发。与第34关不同的是,这里不能输入数据库中存在的用户名字段才能注入成功。
uname=-1%df%27+union+select+1%2Cdatabase%28%29+--+