zbzCMS初审

题记:最近心血来潮,想玩下代码审计,奈何java底子完全不行,php还能将就看看,就找老大哥要了几个简单来玩玩,顺便复现

找到index.php文件夹,进行cms网站搭建,安装,安装完成后访问后台url:

http://127.0.0.1:8086/cms/admin/login.php

审计(偷懒用审计工具扫了下):

  1. 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时,回显正常。存在布尔注入