记一次对金融直播间的渗透

Mr.Wu 3,024 3 正在检测是否收录...

一哥们丢来个站,让帮忙瞅瞅,然后打开网站手工瞅了下,找到好几处注入点,可是在尝试闭合这里,却浪费了太多时间....

注入点

记一次对金融直播间的渗透

如图所示,在闭合这里折腾了好久好久,丢SQLMAP中也跑不出来,期间曾经请教某大佬,结果某大佬折腾半天后成功闭合,然后人家不告诉我闭合的方法,扎心了老铁....

好吧,我自己折腾,经过各种尝试,终于成功闭合

记一次对金融直播间的渗透

手注太渣,果断丢sqlmap中跑数据,结果一直跑不出表和数据来,手注尝试发现被某叼毛拦截了...

记一次对金融直播间的渗透

经过哥们提醒,用 /*!50000Select*/ 的方式成功绕过

记一次对金融直播间的渗透

最终得到后台账号密码,后台地址之前哥们是发过给我的。

GETSHELL

忘了说了,一直没办法得到网站的绝对路径,所以root的注入点并没有什么卵用,只有进后台了,哥们的目的是会员数据,后台有导出功能,所以只要进后台就完事。

记一次对金融直播间的渗透

然而一波未平一波又起,加密是个什么鬼?好吧,不得不想办法拿shell了,在后台胡乱翻一通,其实已经不抱什么希望了,因为这套程序我有老板本的源码,后台无法拿shell的....

记一次对金融直播间的渗透

记一次对金融直播间的渗透

任意上传,老版本源码并没有这个文件,我都不知道该说什么了,这套源码自带2处上传外加1个编辑器,他居然还重新写了一个上传,而且还不做过滤。。。日你没商量。

记一次对金融直播间的渗透

可以看到,只是对上传的文件类型进行了判断,对上传后缀是一点都不搭理的。。

解密

记一次对金融直播间的渗透

看了下他的代码,他是从注册的时候就开始对手机号进行了加密处理,在注册文件中的第97-98行,使用了hidcpt($_POST[telephone]) 函数,我们跟踪一下。

记一次对金融直播间的渗透

图中353-389行是加密处理,根据他的加密方式和 $key 我们就可以写出对应的解密方式,至此这个破站折腾完毕。。

拦截代码

最后,附上我注入被拦截的代码:

<?php
/*云体检通用漏洞防护补丁v1.1
更新时间:2013-05-25
功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞
*/

$url_arr=array(
'xss'=>"\\=\\+\\/v(?:8|9|\\+|\\/)|\\%0acontent\\-(?:id|location|type|transfer\\-encoding)",
);

$args_arr=array(
'xss'=>"[\\'\\\"\\;\\*\\<\\>].*\\bon[a-zA-Z]{3,15}[\\s\\r\\n\\v\\f]*\\=|\\b(?:expression)\\(|\\<script[\\s\\\\\\/]|\\<\\!\\[cdata\\[|\\b(?:eval|alert|prompt|msgbox)\\s*\\(|url\\((?:\\#|data|javascript)",

'sql'=>"[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:dump|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",

'other'=>"\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]");

$referer=empty($_SERVER['HTTP_REFERER']) ? array() : array($_SERVER['HTTP_REFERER']);
$query_string=empty($_SERVER["QUERY_STRING"]) ? array() : array($_SERVER["QUERY_STRING"]);

check_data($query_string,$url_arr);
check_data($_GET,$args_arr);
check_data($_POST,$args_arr);
check_data($_COOKIE,$args_arr);
check_data($referer,$args_arr);
function W_log($log)
{
$logpath=$_SERVER["DOCUMENT_ROOT"]."/log.txt";
$log_f=fopen($logpath,"a+");
fputs($log_f,$log."\r\n");
fclose($log_f);
}
function check_data($arr,$v) {
foreach($arr as $key=>$value)
{
if(!is_array($key))
{ check($key,$v);}
else
{ check_data($key,$v);}

if(!is_array($value))
{ check($value,$v);}
else
{ check_data($value,$v);}
}
}
function check($str,$v)
{
foreach($v as $key=>$value)
{
if (preg_match("/".$value."/is",$str)==1||preg_match("/".$value."/is",urlencode($str))==1)
{
//W_log("<br>IP: ".$_SERVER["REMOTE_ADDR"]."<br>时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交数据: ".$str);
print "您的提交带有不合法参数,谢谢合作";
exit();
}
}
}
?>

打赏
发表评论 取消回复
表情 图片 链接 代码

  1. laoa
    laoa Lv 1

    老哥,sqlmap跑sql2008,库名都出来了,但是跑表数据的时候死活跑不出来

    • Mr.Wu
      Mr.Wu Lv 5

      @laoa手工检查下,应该是有什么关键词被拦截了吧

分享
微信
微博
QQ