第二十四关
二次注入,第一次接触到。
看源码,由于在每个参数前面都加了mysql_real_escape_string()函数,会在注入语句中的单引号双引号等特殊字符加“/”,将这些字符进行转义,所以除了宽字节注入外其他的都不能进行注入。
但是在注册用户的时候尝试使用单引号等特殊字符试一下,发现这些字符不会被过滤:
1.png
而且看修改密码的源码:pass_change.php
2.png
发现$username那里没有使用过滤函数,因为它认为从session中得到的数据是安全的,那么session是从哪里得到的呢?session是从数据库中得到的,数据库中的数据就一定安全了吗,刚才发现注册的时候是可以注册引号等特殊字符的,那么我们是不是可以注册一个注入语句然后让他去执行呢。比如我注册一个用户名为admin’ #的用户,我就可以在不知道admin密码的情况下去修改admin的密码。
3.png
修改成功了。
4.png
update语句可以显错注入和盲注,但是这里试了一下显错没成功。放个传送门自己看吧,溜了溜了。
网友评论