本关属于时间注入,基于源码分析,闭合字符是单引号。
本关没有错误提示,那么我们只能靠猜测进行注入。这里我直接从源代码中看到了 sql语句。
那这里对 id 进行 ‘ id’ 的处理。
本关我们利用延时注入进行。
uname=admin'and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=11&submit=Submit
正确的时候可以直接登录,不正确的时候这里会延时 5 秒。
然后使用length猜数据库名的长度,根据注入结果,猜到的数据库长度为8个字符,
if(length(database())=7,1,sleep(5))#&passwd=&submit=Submit
其次继续使用if函数进行猜数据库名
最后就是猜数据库表和猜数据库了,这里就不在叙述了。
本关与第16关相似,基于源码分析,闭合字符是双引号。
本题没有错误提示,这里利用延时注入,使用(“”)进行处理。
在php源代码中添加下列内容输出该语句。
然后回到关卡,本关使用双引号加括号进行包裹。
利用延时注入猜解数据库。
post数据: uname=admin")and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=11&submit=Submit
数据库第一位是s。
可以从php源码中可知,这是一个更新密码语句。
username需要输入正确 new password的值输入:
利用报错类型的盲注extractvalue
uname=admin&passwd=11'and extractvalue(1,concat(0x7e,(select @@version),0x7e))#&submit=Submit
可以看出成功爆出来数据库版本号。
这样就可以将@@version换成其他句进行注入,也可以用sleep进行注入。
爆出对方数据库security。
这道题,我们直接从源代码分析,可以看出这道题,函数check对用户的uname和passwd都做了过滤。
又看到 insert语句,他把user-agent插入到了数据库,所以可以从这里下手,而且看的出来是单引号型,接下来开始爆破。需要使用抓包工具,更改user-agent。
又看到 insert语句,他把user-agent插入到了数据库,所以可以从这里下手,而且看的出来是单引号型,接下来开始爆破。 需要使用抓包工具,更改user-agent。来吧,这里我们用burpsuit抓取。
从服务器的响应包可以看出user Agent 信息变成hxzhxzhxz.
然后我们更改自己的user-Agent ,利用extractvalue函数,来爆出mysql版本号。
下图成功看出成功爆出数据库的版本号未5.7.26。
本关与第十八关类似,从源代码可知,我们获取到的是HTTP_REFERER。我们需要从referer里修改。
如图我们将请求包的referer随意设置为hhhhhhhhh,然后发送。响应respose为hhhhhh。
如下图可知我们更改自己的Referer,利用select @@basedir函数,成功爆出mysql的安装路径。
'and extractvalue(1,concat(0x7e,(select @@basedir),0x7e)) and '1'='1