ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

buuctf-pwn pwnable_start(ret2shellcode)题解(学习过程持续更新)

buuctf-pwn pwnable_start(ret2shellcode)题解(学习过程持续更新) 本人也是在自学过程主要目的也是记录学习过程有些地方做的不太好都是按照自己理解进行讲解的不专业欢迎大家指出问题此处我将文件命名为pwnchecksec pwn 查看一下保护机制可以看到这是一个32-bit的文件什么保护都没开将文件拖入ida得到一段段看先看首先调用了write(1,ecxesp,0x14)也就是从esp指向的地址写出0x14字节的内容此时的esp指向最后一行的pushpush 3A465443h - CTF:push 20656874h - the push 20747261h - art push 74732073h - “s st”push 2774654Ch - “Let’”也就是输出“Let’s start the CTF:调用read(0,ecpesp,0x3c)从esp指向的地址写入0x3c的内容此时esp仍指向刚刚的位置add esp,14h - esp0x14retn - pop eip , esp0x4思路因为ASLR保护栈地址每次随机为了确定我们输入shellcode的地址得返回到mov ecx,esp的位置再次调用write打印出栈地址。也就是溢出覆盖返回地址→跳回 mov ecx,esp→write 打印 esp 泄露栈地址→手动修正偏移算出缓冲区地址→跳转栈执行 shellcode→getshell返回虚拟机nano exp.py保存退出python3 exp.pycat flag此题完
返回列表