pwn ret2text

好久没有写博客了,今天记录一下做ctf-wiki上ret2text的过程,也记录一下学到的东西,一点一点积累成长。

地址:ctf-wiki
源程序也在里面
边看视频边学的,视频地址为: ret2text

程序下载好之后通过checksec查看保护措施:
pwn ret2text_第1张图片在这里插入图片描述没有开启canary,32位动态链接程序

知道程序的基本信息后运行一下程序,看看程序都有什么功能。

pwn ret2text_第2张图片测试后得知只有一个输入点。

拖进ida分析一下(因为是32位程序,注意用ida.exe打开不是ida64.exe)

看一下main函数(F5反编译生成伪C代码)

pwn ret2text_第3张图片
在反编译后,可以用tab键实现反编译代码和View的快捷切换

可以看到有gets函数,并没有做输入限制
,可以利用该函数覆盖返回地址。

此时可以用cyclic工具生成字符串进行定位,同时也用gdb开始调试
(很惭愧的说这是我第一次使用gdb,调试方法还是不太懂,接下来的学习会补上的)
在这里插入图片描述pwn ret2text_第4张图片再利用cyclic查询缓冲区长度
(不懂了就要看帮助,cyclic -h有各种参数的意思)
在这里插入图片描述缓冲区长度为112,然后检查程序都有什么功能,使用的是objdump(第一次使用,不会了看帮助)

pwn ret2text_第5张图片
可以看到有system函数,用ida看一下他的地址。

pwn ret2text_第6张图片点击右边箭头指向的system,按X键后出现的框再双击可以找到是哪个函数调用了这个函数。

pwn ret2text_第7张图片
pwn ret2text_第8张图片发现了地址,接下来编写exp


```python
from pwn import *   #套路

p = process('./ret2text')  #加载进程,和本地的进行交互

p.sendline('a'*112+p32(0x804863A))  #发送字符,a*112填充缓冲区,后面的为覆盖地址

p.interactive()  #与程序进行交互

运行一下exp

pwn ret2text_第9张图片成功运行

总结

第一次做,算是看着视频一步一步跟着做下来的,中间还有很多步骤不是很理解,例如canary,NX,IDA一些功能的使用,gdb调试器pwndbg的使用都有待加强,在这几天也看了很多资料,感觉收获很大,算是开了个好头吧,继续加油。

你可能感兴趣的:(pwn ret2text)