本文章由二农戏猪编辑

审计控制器

从上一篇审计完了入口文件和搞清楚路由规则之后,我们开始正式审计控制器。

Home目录

app/home/index.php开始审计,前面没什么可说的,但是注意这里,虽然它是判断不是PC登陆时候执行,但是我们可以看到它调用的查询方法,感觉很熟悉,比较像think里面定义的查询方法,我们回想起上一篇审计的时候,审计到的过滤机制,我们全局搜索一下where(,一个一个去查看,看看是否有where条件为两个参数,或者int类型。

image-20210216170353153

image-20210216170648309

后台SQL注入

功夫不负有心人,我们在此处,发现$sid未被单引号包裹,并且未被强制转换未int类型。目录为admin\controller\special.php,我们尝试复现。好的一处SQL注入漏洞。

image-20210216172021865

image-20210216173022873

前台SQL注入

正当我以为没有前台SQL注入的时候,突然间,有发现了一个位置。突然间想起一句话:缘,妙不可言。

找一下。看看$sid怎么传进来的,是否可控

image-20210216215919794

全局搜一下这个get_category_list(),发现在home/controller/special.php中,category()这个方法中,通过GET传入的sid这个值,虽然这个方法中对$sid加有单引号保护,但是在调用get_category_list()时候就是在裸奔,好的,复现一下

image-20210216220422747

image-20210216220626719

完全ok。前台到这里就审计完成了

前台XSS

home\controller\articles.php,articles方法这个位置htmlspecialchars_decode,这个函数将实体化的符号进行解码,突然就引起了我的注意,因为我们在前面审计到,它会将传入的值进行html实体化编码,然后存入数据库。这个位置它将数据又进行解码,菜鸡的直觉告诉我,一定是有问题的,我们找一下$data这个变量是哪里来的

image-20210217211349970

在这个32行我们看到是从这个数据库中查询得来的。

image-20210217211758408

image-20210217214001469

我们找一下是如何写入的,这里因为内容太多,用下debug看一下查询语句:"SELECT * FROMtemmoku_articleASAINNER JOINtemmoku_contentASBON A.aid =B.aid WHERE A.aid=3 ORDER BY A.aid DESC LIMIT 1"在回溯的时候我犯了一个很难受的错误,我去搜索jab.'content,没有搜索到,怀疑人生ing,但是,我后来想起来,搜索jab."content才定位到位置,难受。

在这里,admin\public_class\article.php中,发现写入jab.content数据库。继续回溯

image-20210217220323286

发现user\controller\articles.php出现调用,往上看,add方法。

image-20210217220635477

注册账号并且开启发文章权限。

image-20210217220747537

存储型XSS复现成功

image-20210217220951476

XRSec has the right to modify and interpret this article. If you want to reprint or disseminate this article, you must ensure the integrity of this article, including all contents such as copyright notice. Without the permission of the author, the content of this article shall not be modified or increased or decreased arbitrarily, and it shall not be used for commercial purposes in any way