SWPU CTF writeup

0x00 概括

这是我第一次参加CTF比赛。逆向小白,隐写小白,但是做出了所有的隐写题。最擅长Web方向(和编程),而Web题做得不多。Web方向的知识还是不牢固,技巧不够熟练,实践经验不足。

我按照顺序题目分类写写writeup吧。

0x01 MISC 隐写题

做出的

MISC2 150分

先从MISC2开始吧(并没有MISC1)。文件是一段流量的抓包,使用wireshark提取文件,其中有一个请求flag.zip的HTTP请求,提取flag.zip,解压得到一个ce.txt文件。大致如下图所示

第一次打CTF,不太熟悉套路,看了好久才发现可能是RGB值。行数为98457=887*111,可能就是长宽了。用Python PIL写了个脚本,图片还原如下

MISC3 100分

MISC3是一个图片,利用Google搜图搜到原图,对比发现最后增加了一串字符,OZRGW4L3OVVUG22TL53HEZDVPJ2HKY2DKZIVQVTVOZ5HKY3LOJ3HIWSEKVBFIR2ZKNVXMY3LOR3H2===,看到等号应该想到base64,看到三个等号应该想到不是base64。实际上是base32编码,解码得到vbkq{ukCkS_vrduztucCVQXVuvzuckrvtZDUBTGYSkvcktv}。感觉前四个应该是flag,初步怀疑是凯撒密码,后来发现ascii码的奇偶不同,位移方向不同,写个脚本得到flag。

MISC4 100分

fuck.html,长这样

很显然这个是jsfuck,直接运行即可查看结果,如下图

弹出结果为brianfuck加密,解密即可得到flag

0x02 Web

做出的

Web 100

这是一道文件包含方面的题目,Tips1是include.php。请求include.php,提示Tips: the parameter is file! :)查看html源码,发现upload.php,这是一道上传文件包含的题目,如果是纯上传就不会有include.php,所以上传应该限制比较死。首先利用php://filter/convert.base64-encode/resource=include拿到include.php的源码,这里有个坑,文件名不能是include.php,这不科学,但是看到源码后就知道了。base64 decode得到源码

1
2
3
4
5
6
7
8
9
10
11
12
13
@$file = $_GET["file"];
if(isset($file))
{
if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)
{
echo "<p> error! </p>";
}
else
{
include($file.'.php');
}
}

过滤了http等远程协议,不能使用php://input,不能利用%00和多个./截断。还会在文件名后面加.php后缀,而显然无法上传php文件。在这里,有两种文件可以突破限制,一种是利用zip://伪协议,另一种是phar://伪协议。zip不行,phar可以,即可拿到shell,在当前目录下有一个文件,swpu_wbe2_tips.txt,内含flag和下一道题的提示。

0x03 完整Writeup

http://bobao.360.cn/ctf/detail/173.html
http://blog.l1n3.net/writeup/swpu_ctf_2016_writeup/