Jarvis OJ-PWN-[XMAN]level0 wp

地址:nc pwn2.jarvisoj.com 9881


第一次做pwn的题目 先准备一下环境
1.pwntools sudo pip install pwntools
2.python sudo apt install python-pip


先打开虚拟机 把文件放进去用checksec看一下
在这里插入图片描述
发现是64位的 程序编译时关了栈不可执行保护
这说明我们可以在buf里面输入shellcode和填充字符
并且让函数的返回地址覆盖成buf的栈上地址 来实现栈溢出攻击

下面我们用IDA64来分析一下这个文件
F5查看伪代码
在这里插入图片描述
我们看到在主函数中输出了一个Hello,World
接下来我们跟进vulnerable_function()函数
在这里插入图片描述
可以看出来是通过read函数把标准输入的200位写入buf中
很显然是泄露内存(づ′▽)づ
接下来我们看一下buf
在这里插入图片描述
    
    -  -  -  -loading  -  -  -

在这里插入图片描述
从第一个01到第80个 由于是16进制 所以是 16x8=128个数
所以我们只需要将128填满 然后再进行跳转就可以啦
那么我们要跳转到哪里呢(◍•ᴗ•◍)ゝ
先用shift+F12看一下字符串 找一下比较关键的
在这里插入图片描述
我们看到了一个/bin/sh
函数就是执行system("/bin/sh")
所以前面栈溢出的位置可以直接跳到这个函数
我们点进去看看(っ●ω●)っ
在这里插入图片描述
看到了一群这样的东西
那我们从Export中打开callsystem
在这里插入图片描述
这一行对应的Address是0000000000400596
构造payload=0x88*‘a’+p64(0000000000400596)
(*゚ー゚)
前面说需要128个空间覆盖buf,这里我们用128个‘a’来覆盖buf,用p64打包这个函数地址,用payload进行漏洞利用。
◝( ゚∀ ゚ )◟

我们有了大概思路以后就可以在Ubuntu里面新建一个文本文件了 先用touch OJ0创建了一个名字为OJ0的文件 然后就可以往里面写代码了

✧◝(⁰▿⁰)◜✧
在这里插入图片描述

1.第三行就是用来建立一个远程连接,url或者ip作为地址,然后指明端口。由于题目在一开始就告诉了我们地址 于是我们就用题目来做远程连接,将9881作为端口保存在变量r中
2.倒数第二行就是 利用漏洞发入该端口中 获取控制权
3.r.close()就是利用好关闭
在这里插入图片描述
写好了大概是这样子的 我们保存并将它的后缀名改为.py即可
然后我们在虚拟机中运行该文件
在这里插入图片描述
看来我们已经获取了控制权 那么就是Flag了
输入cat flag
在这里插入图片描述
成功找到flag (´ΘωΘ`)
CTF{713ca3944e92180e0ef03171981dcd41}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值