pwn_note

BugkuCTF练习平台pwn3(read_note)的writeup 在Bugku的pwn题中,这道题分值最高,也是难度最大的一道。难点在于,第一要读懂题目找出漏洞,第二是要绕过各种保护机制,第三是exp的编写调试。看一眼程序的保护机制,发现除了RELRO所有保护全开,还是有点头疼的,毕竟我刚开始学pwn没几天,还没有做过PIE和Canary的题目,所以调试还是花了不少时间的。 首先分析程序,重要部分如下所示。一开始会让你输入一个路径,不存在的话就会报错推出,然后打... 阅读详情

gcc -m32 -g -save-temps hello.c           //生成hello.i,hello.s,hello.o
readelf -h hello.o                                    //读取文件头
c = 预编译 汇编 elf (重定位)a.out
objdump -d hello                                    //查看汇编代码
readelf -S hello                                        //查看这个elf文件
readelf -h hello                                        //读取文件头
pe文件和elf文件都是由coff发展过来的
od hello | head -5                                     //查看头的8进制格式
od -A x hello |head -5                               //查看头的16进制格式
od _A x -t x1z hello |head -5                     //查看头的16进制形式并解析文本
file hello                                                    //查看文件类型
readelf -l hello                                           //查看programe头
代码 数据 局部变量 so
gdb用法:
start              
disas                                                          //查看指定函数的汇编
i functions                                                 //查看binary的所有函数名字
disas $pc                                                   //查看当前运行到的地址
i proc mappings                                        //查看当前的内存布局
l                                                                  //查看源代码

xxd                                                             //以文本格式打开文件
 

2021 祥云杯 pwn note 保护全开 功能1 可以申请chunk,然后会给chunk地址。 功能2 功能2有一个scanf的任意写。 功能3是一个输出。 利用的就是scanf的任意写。 我们知道scanf会把我们的输入的字符串当成第一个参数,如果还有需要,会先从五个寄存器去找,然后再去找栈中的数据,那我们也去看一下寄存器或者栈上的数据有没有可以利用的。 偏移8的地方显然有一个_IO_2_1_stdout_地址,所以我们可以把他当作参数做一个任意写,劫持_IO_FILE然后泄露libc,再来一次把malloc_hook地址写上去, 阅读详情

相关推荐

[第六章 CTF之PWN章]note

RELRO半开 就是个菜单堆。 free free函数有uaf。 2.27的libc直接double free就好了。 exp from pwn import * r = remote("node4.buuoj.cn", 26014) def add(size,cont): r.sendlineafter(">>", '1') r.sendlineafter('Size', str(size)) r.sendlineafter('Contet', cont) def dele(i.

yongbaoii的博客 645

2021 祥云杯 pwn-note

在第一个图那里下个断点,查看stack时发现%11$p这里有一个stdout,这个给了我们泄露libc的机会,我们可以打stdout的flag和write_ptr,具体的可以看别的师傅对stdout泄露libc分析的文章。偏移为7, 这里笔者用的ubuntu20.04的2.31libc做的,不需要利用realloc来调整可以直接利用,题目给的libc需要利用realloc来调整一下即可。拿到libc之后,算出ogg,ogg出来了,可以再利用scanf任意地址写打malloc为ogg。

z1r0的博客 542

2021 ctfshow 月饼杯 pwn Moon_note

保护全开,没给libc。 没给libc真可谓。 菜单 create 设计的很有意思,申请的chunk实现了类似unsorted bin 的一个hash表。 chunk的结构是前16个字节是title,中间16个字节是链表,后八个字节是一会write的时候写内容的chunk地址。 write 就是申请一个chunk,写东西,地址放到上面create里面说的那个玩意里面。 但是只能写一次。 show 正常show delete free掉chunk,但是漏洞就在free掉那个wirte的chunk之后没有清.

yongbaoii的博客 466

第二届“祥云杯”pwn_note

这题是格式化字符串漏洞 + House Of Orange + __malloc_hook 组合利用,难度倒也不是很难,对于我这种新手学到了不少东西。 但是我觉得这里并不是的格式化字符串漏洞,倒不如说是故意构造的逻辑漏洞,姑且称它为格式化字符串漏洞吧。 思路: house of orange:通过修改 top chunk 的 size,来触发 brk 扩展堆段,之后原有的 top chunk 会被置于 unsorted bin 中。本题再直接 show 泄露 main_arena 计算偏移得到 libc。

孤勇傻兔的博客 1805

【PWN系列】攻防世界 pwn note-service2题目分析

主要题解:https://blog.youkuaiyun.com/seaaseesa/article/details/103003167 这篇文章写已经是不错的了,这里主要写一下我对上面那篇文章的理解 1、以下code0到code3的长度都是七个字节。不足七个字节的用\x90填充。90机器码所代表的汇编指令是nop。因为我们跳转的时候用的是相对偏移跳转,所以必须要填充为七个字节,否则偏移要重新计算了。 code0 = (asm('xor rax,rax') + '\x90\x90\xeb\x19') #rax =

Vicl1fe的博客 642

Alphafold2/multimer本地安装避坑指南:从Conda环境配置到GPU加速实战

本文详细介绍了Alphafold2/multimer本地安装的全流程,从Conda环境配置到GPU加速实战,特别针对常见的报错处理提供了解决方案。通过硬件环境检查、依赖安装技巧、OpenMM补丁应用等步骤,帮助研究人员高效部署蛋白质结构预测工具,提升计算效率。

weixin_29309213的博客 115

攻防世界PWN之note-service2题解

note-service2 首先看一下程序的保护机制,注意,PIE是开启的,这个checksec检测PIE有时候不准确。不过,我们看到NX是关闭的,说明堆栈的数据可以被当做指令执行 然后,我们用IDA分析一下,发现是一个很简单程序,并且只有添加和删除功能,其他功能未实现 创建这里,有三处值得我们注意 创建的堆空间大小最多为8字节 保存堆指针的数组下标可以越界 既然数组下...

seaaseesa的博客 3339

AI大模型与碳足迹评估结合模式及示范案例

AI大模型与碳足迹评估相结合,可以提供更精确、更快速的碳排放量计算,优化减排策略,并促进可持续发展目标的实现。

贾贾的博客 3943

攻防世界PWN之notebook题解

Notebook 研究了一下,做出来的人挺少,还挺有成就感 首先,检查一下程序的保护机制,发现PIE和RELRO未开启 然后,我们用IDA分析一下,看起来好复杂的样子 发现有溢出和格式化字符串漏洞 首先当然是想到利用格式化字符串漏洞来泄露canary的值 要想执行格式化字符串漏洞,得满足那个if条件 我想了好久,才反应过来,如果有传入格式化的字符串,这个条件就不可...

seaaseesa的博客 663

内存预取黑科技:__builtin_prefetch在数据库和游戏开发中的高阶用法

本文深入探讨了GCC内置函数`__builtin_prefetch`在数据库和游戏开发中的高阶应用。通过LevelDB的SSTable文件读取优化和UE5引擎场景数据流式加载的实战案例,详细解析了预取参数调优的艺术,并借助perf工具量化分析了不同策略的性能提升效果。文章还介绍了与`__builtin_expect`等内置函数的协同优化技巧,帮助开发者最大化缓存命中率。

weixin_29019241的博客 415

手把手复现金蝶云星空V8.1文件上传漏洞(附完整POC与修复方案)

本文深度解析金蝶云星空V8.1文件上传漏洞,提供详细的漏洞复现步骤与完整POC,涵盖技术原理、测试环境搭建及验证流程。同时给出多维防护方案,包括官方补丁部署、临时缓解措施和长期安全加固建议,帮助企业有效防范任意文件上传风险。

weixin_30505225的博客 179

2022 网信柏鹭杯 pwn2 note2

因2.34之后取消了malloc,free hook这两个在堆pwn中用的最多的hook,roderick师傅分享的house of apple学习了一下,是一个非常好用的调用链,包括house of emma, house of kiwi, house of banana, house of pig, house of cat都是极好的调用链,前天的网信柏鹭杯里的pwn2是2.35的,笔者学完apple之后这里拿的2.34做的,只需要改偏移就可以打通2.35的。

z1r0的博客 851

华为OD机试双机位C卷-魔法收积木 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【魔法收积木】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od - 魔法收积木。

qq_45776114的博客 1939

攻防世界pwn之note-service

写在前面:最近在准备期末考试,姑且是这个理由吧,pwn和re都停了一个月了,感觉自己不够持之以恒,本来说还得一天一道题,给搁置了一个多月了,pwn和re这东西,不进则退,搞得我很难受,本来想的是,这个学期有点成绩,但是现在看来才是刚入门,而且还要复习考研,时间和精力会更少。喜欢pwn和re是因为自己很喜欢从原理搞清楚一个事情。不多啰嗦了,开始写wp了。 题目:note-service 原题是CIS...

qq_42728977的博客 1002

数据挖掘7、银行精准营销

利用数据挖掘技术,对银行已有数据进行分析,对客户进行识别,对客户是否能够进行存款精准营销Windows11。

m0_63099685的博客 393

一文快速教你如何下载国自然模版

5. 成功进入“相关文件查看”页面后,点击左侧的“项目申请文件“,如果你此次申请的是“面上项目”,选择对应的下拉框,找到对应的模版下载即可。6. 🫑们发现,在当前页面点击“青年科学基金项目”,左侧出现的是“原国家杰出青年科学基金项目”。7. 进入下一页后,点击“青年科学基金项目”,便可以在右侧找到🫑们要找的模版啦。2. 成功登陆后,点击1处的“首页”,在首页界面,再点击2处的“项目批准”。8. 点击上图3处的“文件详情”,就可以找到可以下载的模版啦(如下图)。3. 从“项目批准”进入后,点击“管理”。

薰珞婷紫小亭子的博客 2397

BugkuCTF-PWN题pwn3-read_note超详细讲解

知识点 puts()的特性 , puts()会一直输出某地址的数据,直到遇到 \x00 Canary最低位为\x00(截断符) \x 和 0x 的区别: 区别不大,都是把数按16进制输出。 1、0x 表示整型数值 (十六进制) char c = 0x42; 表示的是一个数值(字母B的ASCII码66),可以认为等价于: int c = 0x42; 2、\x42用于字符表达,或者字符串表达 char c = ‘\x42’; 亦等价于: char c = 0x42; char* s = “\x41\x42

am_03的博客 3189

《UDS协议从入门到精通》系列——图解0x10:诊断会话控制

什么是诊断会话控制服务?切换模式时ECU要做哪些?有没有通信示例?本文全网最详解!!

车载系统攻城狮 1万+

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持。

Mr_Fmnwon的博客 480

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

pwn cgctf note3

好像服务器挂了??这道题是fast bin存在uaf漏洞申请3个unsort bin堆块释放一个打印得到libc的基址算出one_gadget然后再释放改变第二个堆块的fd指针为malloc_hook-0x23在申请一个大小相同的堆块,在第三块堆块写入one_gagdet,再次申请堆块出发one_gadget,额本地拿不到~~ from pwn import * #p=process('./not...

doudoudedi 490

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

攻防世界pwn进阶区 note-service2(堆指针越界&堆上布置)

本文介绍数组越界漏洞如何去利用,在比赛中不知shellcode并控制程序执行流程,通过分析保护机制,程序功能,IDA逻辑,提出利用思路,替换GOT表,使用jmp short表和堆栈数据执行。

2402_84316445的博客 960

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

2016_ZCTF_Pwn note2(unlink)

暑假学习计划 - 0x03 2016_ZCTF_note2 详细分析参考:CTF Wiki 肝了一下午 + 一晚上,还是有一部分还不是很理解: ①为什么payload1后面一定要加上p64(64)+p64(0x60),为什么不能删除或者改大小; ②分配的三个堆块,为什么第一个和第三个大小一定是0x80; 路过的各位大佬,如果知道麻烦指点一些,谢谢啦 from pwn import...

Pwnpanda的博客 749

2024 D^3CTF pwn(d3note write_flag_where D3BabyEscape pwnshell)

然后找能够存有freegot表地址的pie地址,并且pie地址要是余8的,另外不能更低了,更低的got表地址没有写权限,没找到,想看能不能存有chunk_array的pie地址的pie地址,没找到,找存有低于chunk_array的pie地址的pie地址,找到了,能写,然后写chunk_array里的len和ptr,达到任意地址读写的效果,然后写got表。然后此时可以改原来的第一个chunk的chunk2ptr和size(edithacker要用),然后覆盖为efree的got表地址,

llovewuzhengzi的博客 811

[BUUCTF]PWN——zctf2016_note2(unlink)

zctf2016_note2 附件 步骤 例行检查,64位程序,开启了canary和nx 试运行一下,看看大概的情况,经典的堆题的菜单 64位ida载入,方便看程序,我修改了函数名 New_note() 定义的时候i是unsigned_int64,但是for循环里的i是int64.我们都知道,在c语言中,无符号变量和有符号变量比较时,会将有符号变量转化为无符号变量来比较。所以这里size为0的时候。(unsigned int)(size-1)就就是非常大的整数,存在整数溢出漏洞 show_not

mcmuyanga的博客 1193

ADworld pwn wp - note-service2

qword_2020A0[v1] = malloc(result);存在数组越界漏洞, 可以借此将特定的指针写到got表里 写入content的处理函数, 最后一个字节会赋值为0, 所以可用的空间是7字节 选择delete会触发free() 整合已有信息: (1) 数组越界漏洞 (2) 一个chunk可以使用7字节 (3) delete选项可以free相应的chunk 利用思路: (1) 申请多个chunk, 分段写入shellcode (2) 利用数组越界修改free的got表项为shellc...

fa1c4的blog 213

ciscn 2022 pwn-newest_note复现

刚开始有个溢出(太菜了,其他师傅提醒才看出来) del 函数里面 free之后指针没有清0 攻击思路: 如果elf里面使用了stdout,等,那么IO函数里面取到的stdout就是bss段上的stdout,否则就是libc里面的stdout。IO函数位于libc里面,libc里面有一处地方可以泄露elf基址(这段区域是只读的) 考虑alloc到heap数组上,然后修改成员为图中的地址,这样就可以leak elf的地址了(leak之后是为了后面修改free count做准备)。前提是得先leak lib

qq_34010404的博客 900
上一篇: 操作系统知识盘点(五)(内存管理方式以及其他)
下一篇: 常见Windows API(文件、注册表、服务、进程线程、DLL)
fa1lr4in
博客等级 码龄9年 64粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值