ThinkSAAS SQL注入

版本 ThinkSAAS 2.32 目前最新版。
app\group\action\do.php 281行

post变量全局做了转义,$content = tsClean($_POST[‘content’]);这行去除了转义,导致可绕过单引号限制。
tsClean除去转义后做了一些过滤,但不影响注入。

$_POST[‘content’]变成$content并带入sql语句。
复现过程:
新建小组,发布帖子,访问http://127.0.0.1/thinksaas/index.php?app=group&ac=topic&id=1 (id为小组帖子的id)
接着发送如下请求:
http://127.0.0.1/thinksaas/index.php?app=group&ac=do&ts=recomment
post数据:

最后会执行这样的sql语句。

因为是insert类型的注入,我通过写入3条数据来实现利用。
\:’,11)用来闭合第一条记录,因为addtime是int型,无法写入string,难利用。
(’22’,1,’1′,(select concat((DATABASE()),char(45),(VERSION()))),11)用来注入拿到数据。
(1,1,3,’用来闭合最后的内容,因为tsClean($_POST[‘content’]);后前后会被加入回车和

,导致sql语句被分成3行,能控制的数据只在第二行,所以构造这个闭合成完整sql语句。
数据包中token可以在http://127.0.0.1/thinksaas/index.php?app=group&ac=topic&id=1获取到。准确点说,post数据应该是这样:

发送注入请求:
demo
访问http://127.0.0.1//index.php?app=group&ac=topic&id=1查看注入结果,出现了3条数据。
demo

原文链接:,转发请注明来源!

发表评论

要发表评论,您必须先登录