可疑的函数
1.
![](https://images.seebug.org/contribute/1acad086-56b0-43aa-b219-c9eebd161b1c-w331s)
localhost/phpcms/modules/attachment/attachments.php文件的第241GET提交src变量带上了safe_relace函数,现在我们跟入这个该死的过滤函数看看它到底在干什么
2.过滤函数剖析和绕过
![](https://images.seebug.org/contribute/a8e9fdbe-2d32-474f-bd0c-25a45d704194-w331s)
localhost/phpcms/libs/functions/global.func.php文件的63行开始可以看到此处将传入的%27和%2527都进行删除处理也就是还没传入数据库前就已经被程序吃了,但是在67行看到他还吃了*这样我们就有办法了也就是传入%*27程序吃掉星号后%27就会被传入。*/
3.src变量到底去哪了
/这里不做截图请回到第一步的截图查看,在241行代码src传入arr数组后在243行被json_encode函数加密为json格式后传入json_str数组,然后在244行代码又将json加密为cookie。在这里我做个大胆的假设src存在注入那么我们要传入参数`:src=%27 updatexml(1,concat(1,(user())),1)%23;`那么我们传入的参数将会被json加密后最终成为了`:{src:%27 updatexml(1,concat(1,(user())),1)%23};`再然后就是cookie加密这里不做计算cookie加密值需要的同学自己echo,假设暂且到这,它的最终这些动作都被赋值为swfupload_json函数。
down.php的decode成全了我
![](https://images.seebug.org/contribute/0f9acfa0-5591-4207-a628-f1d37e78ebee-w331s)
在localhost/phpcms/modules/content/down.php的第14行代码将a_k变量进行了decode操作这样子我们把刚刚在src进行加密的SQL传入a_k他就会进行解密还原回json,17行 将json字符串解析成变量 -> parse_str 以 & 区分,将字符串解析成3个变量最后传入SQL为:`{“aid":1,"src":"&id=%27 updatexml(1,concat(1,(user)),1)#&m=1&f=haha&modelid=2&catid=7&”,”filename”:””}`;此处可以看到之前%*27的*没了因为已经被安全函数吃了*。最后我们看在第26行代码将id传入SQL字段id既然这样那就OK了我们尝试还原。
phpcms_v9.6.0_sql注入还原
访问/index.php?m=wap&c=index&a=init&siteid=1获取一个cookie值传入该死的src那块操作否则会没有身份。
![](https://images.seebug.org/contribute/19238446-97ff-4625-9448-a360407a3282-w331s)
2.把这个cookie的值复制下来以POST传入userid_flash变量访问/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%26id=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%26不编码里面是SQL的Payload
![](https://images.seebug.org/contribute/31971335-dc25-4ddc-892c-5d24af8c9553-w331s)
3.上一步我们已经获取到了通过json在通过cookie加密的SQL了因为他返回的cookie就是已经加密的SQLPayload现在我们传入到a_k变量看看到底发生了什么?
![](https://images.seebug.org/contribute/f2dd66ff-7fcd-455d-9675-3e60203bc7e6-w331s)
全部评论 (3)