zbzCMS初审
题记:最近心血来潮,想玩下代码审计,奈何java底子完全不行,php还能将就看看,就找老大哥要了几个简单来玩玩,顺便复现
找到index.php文件夹,进行cms网站搭建,安装,安装完成后访问后台url:
http://127.0.0.1:8086/cms/admin/login.php
审计(偷懒用审计工具扫了下):
- SQL1
查看源码cms/admin/art_list.php:
通过源码这里发现,这里利用isset()函数来判断$_GET['tid']传递的tid值是否为空,然后再将GET方式传递的tid值赋值给变量$tid,下面的代码就很关键:
**$tid_zis=$c_sql->select("select id from type where tid={$tid}");**
这里就是$c_sql来引用select("select id from type where tid={$tid}"),这里就继续追踪select()函数发现在/cms/include/class_sql.php被定义:
这里就发现select($sql)函数下面是直接执行了,那么这里就有问题了,在前面GET方式进行传参的时候tid并没有进行过滤,这里在进行调用select()函数来查询数据库的时候是直接执行了,所以这里就存在SQL注入,那么就可以进行漏洞检测,通过源码我们可以定位到是art_list.php
然后根据代码,是通过GET方式来传递tid值,所以可以构造payload:
判断数据库长度是否大于6,回显正常
http://127.0.0.1:8086/cms/admin/art_list.php?tid=3and (length(database())>6)
http://127.0.0.1:8086/cms/admin/art_list.php?tid=3and (length(database())>13)
判断数据库长度是否大于13,回显无数据
查库名第一个字符
当ascii为100即第一个字母为d时,回显正常。存在布尔注入