这一关有点小难 所以说我们需要借助源代码的力量来帮助我们解题
查看源代码
对于login.php
重点部分如下
来了解一下mysql_real_escape-string()函数
百度百科是这样解释的 mysql_real_escape_string_百度百科
总结来说就是对某些字符会进行转义操作 而且这个比较智能 会识别服务端和客户端的字符集
所以就不能再登陆界面出进行注入操作
看一下login_create.php的重点部分
其实mysql_escape_string()函数已经过时了 因为他不能识别客户端的字符集 故而不能起到对特殊字符的过滤操作 所以我们不用担心过滤问题 所以可以再创建页面进行注入操作
最后看一下pass_change.php 重点部分如下所示
所以说结合login_create.php和pass_change.php两个php文档的重点部分
我们可以构造如下语句
我的思路是这样的
首先创建一个新用户名和密码 如下所示
Dumb'--+
密码设置为111
然后后面登录到这个账号
进行密码的修改 将111修改为333 则就可以利用pass_change.php里面的update语句进行Dumb'--+的注入 这下就相当于Dumb的密码修改为333
那么我们就可以利用我们的就用户名和新密码进行登陆即可
这关属于典型的二次注入题型
我们新创建的用户名和密码再数据库中的样子如下所示
然后我们登录上我们的新用户名和新密码
回显如下
修改以后
查看数据库中的Dumb的密码是否修改为333
试试看能不能登录上去旧的用户名和新设置的密码
登陆成功
嗨嗨通关成功!!1