攻防世界小记

前言

这里挑选了一些个人认为有价值的题目,当然,正在不断攻克中,会不断更新的(暂时只更新一个专题)。

Misc

embarrass

这道题是一道流量分析题,首先拿到流量包,发现有点大266MB(太大了,就不放出来了),估计有点东西,于是首先导出文件,发现有很多杂七杂八的东西,但是看过一遍后貌似没有什么有用的东东(比如压缩包啊啥的)??嗯??这么坑的吗?于是想到这种题多半是直接给了flag在字符串里面的,靠N多数据包来混淆我们,让我们难以直接发现,只能瞎找数据包,于是拖到虚拟机,输入命令:

strings misc_02.pcapng | grep flag

Emmmm,果然不出所料:

flag

看一看我们得到的导出文件,毫无L用。。:

导出文件

Reverse-it

这道题有点难度,而且极具迷惑性。首先我们拿到题目,是一个二进制文件
先用010看一下,发现是二进制文件,既然“提示”我们要逆向它,那么我们就先用IDA分析一下,然而太菜了,什么都逆不出来。放到虚拟机运行一下试试看?报错!然而,Linux还是有用的,可能这里的逆向不是我们想象中的逆向,这里指的应该是把它反着输出一下?不管了,试试看!于是使用了一下命令:

xxd -p Reverseit | tr -d '\n' | rev | xxd -r -p > reversed

这里解释一下这些是什么意思:

  1. ‘|’: 比如a | b的意思是将a的输出作为b的输入;
  2. xxd -p filename表示把filename进行十六进制存储;
  3. tr -d ‘\n’表示删除换行符;
  4. rev表示把字符相反输出;
  5. xxd -r -p表示把十六进制转换成二进制;
  6. 接着> reversed表示将其存储为名称为reversed的文件。

还没完,还要使用file命令确定一下reversed的类型:

file reversed

啊啊啊,看我们得到了什么!一张名为reversed图片!
命令
flag
我们把图片内容反着输出就行了!

第四FS扩展

这道题又是给了一张图片,如下:
题目

这里的图片我压缩过了,原图片实在是太大了(12M),看到这么大的图片肯定不正常,先用binwalk看一下再说,果然有一个压缩包,里面有一个file.txt,提取出来居然无法打开,WinRAR修复后发现里面的文件居然没了?彻底懵逼了,但是不信邪的我拿图片放到Linux下去binwalk了一下,居然发现结果多了一个ext-root文件夹,里面的压缩包居然是好的???密码当然就在图片的详细信息里啦,拿到file.txt,按照题目提示,当然得分析词频了,把词频按照脚本提取出来,得到flag。
flag

这里上个本题用到的分析词频的脚本

Web

unserialize3

首先我们拿到题目:
题目
我们看到只有一个变量,还有一个方法,以及提示了需要get一个参数code。题目名字又叫反序列化,于是想到该使用反序列化的方法。可是怎么入手呢?注意到__wakeup(),一旦调用了它,就会输出bad request,于是猜测需要绕过这个函数。怎么绕过呢?其实这个函数是反序列化操作中的一个魔法函数,许多魔法函数都有漏洞,这个应该也不例外,于是找到此漏洞,就是反序列化的时候,会检查是否存在__wakeup()这个函数,如果存在则优先调用。于是这道题就十分地明了了————绕过__wakeup()!
通过查询漏洞,得知只要反序列化把对象属性个数搞错就能绕过此函数。于是可以构造如下payload:

O:4:"xctf":2:{s:4:"flag";s:3:"111";}

解释一下这是什么意思:

  1. O(字母O):表示对象(object);
  2. 4:表示对象名字长度(此处xctf长度是4);接下来自然就是对象名字;
  3. 2:表示对象里的属性个数,xctf里只有一个属性flag,但是为了绕过__wakeup(),把它从1改成了2;
  4. s:表示属性的类型;后面的数字表示长度;

于是我们通过code传过去,得到flag:
flag

mfw

拿到站点连接,得到如图网站:
题目
我们拿到提示,进去一看啥都没有。于是只能乱点导航栏,发现如下东东:
提示
我们发现了Git这个东西,于是我们访问如下链接:http://111.198.29.45:31911/.git/,得到:
Git
我统统看了一下,发现没有什么信息,但是唯独这个index,点击它,浏览器自动下载一个index文件,点击它用010打开发现了这个:
Hint
嗯?既然提示这么明显了,我们试一下show_source()得到flag.php的源码:构造payload
' and show_source('templates/flag.php') and '
我们发现会得到两条相同的flag,我们可以使用die()把show_source(‘templates/flag.php’)包含起来只输出一条flag。有时候得注意会过滤’和空格,分别换成%27和%20即可。
flag

未完待续!

文章作者: Leaflag
文章链接: https://www.leaflag.cn/2019/03/05/攻防世界/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeaflagのBlog