PWN堆溢出 1
0-环境
Ubuntu 16
gcc、g++
pwntools
gdb、pwndbg、gdbpeda
环境都无所谓,其余环境可能实际操作与文章相差较大。
1-堆申请(malloc)
并不是申请多少给多少,是系统给了好多供堆使用,然后malloc去里面申请。
12345678910C#include<stdio.h>int main(){ void *ptr=malloc(0x10); void *ptr1=malloc(0x90); void *ptr2=malloc(0x1000); return 0;}
调试步骤:
b main 主函数下断
next 看着汇编执行
vmmap 查看内存有无分配heap 此步骤旨在观察 执行malloc指令前后的区别
heap 查看堆
vis 可视化查看堆,目前还不知道这玩意有啥用
此为Ubuntu16环境下正常显示,其中首个 chunck 即为 malloc(0x10)
Ubuntu18下会出现下面这种情况,第一个chunk 的 size 为 0x251
原因为在 Ubuntu18(libc2.26) 及以上 ...
关于编程的一些思考-调试思维
0-Preview
期末写博客也是实属少见,起因是《数据结构与算法》结课了,要写课程设计。
所以在写课程设计的时候,结合上一学期来学习数据结构的收获,终于可以写一写关于代码方面的思路了。
还有一个原因是👴太懒了,先发个雏形出来,这样假期就会激发👴的强迫症,让👴给他写完。
1-算法的意义
首先,我写过不少算的上还能用的小玩意儿。有合法的也有不知道合不合法的。
虽然程序成功运行以后成就感满满,但是👴经过这几天的沉淀,才发现了潜藏着成就感之后的东西。我也不知道为何一个 PWN ✋要对一些web感兴趣。
之前写的所有程序,有比赛中用来解题的🦶📘,有用来自动健康报备、自动签到一类的小🔧。也有各科的课程设计一类的。
以上这些程序,我编写的进度以及满意度都不是很好,现在看来是受限于算法。例如,今年 ISCC 中Tokeii出的一道 MISC 题目,我当时用的是双表互相遍历,压根没想到去用查询算法,硬着头皮让电脑风扇转了十几分钟,才跑出来结果。
In my judgment,我们进行开发时不是看哪里能用上算法就去用,而是要掌握算法的思维模式,成为一种习惯。目的不是用算法,而是让自己的 ...
四级翻译及阅读蒙题技巧
0 Preview
这篇文章11月2日开始写,忙来忙去,12月11才发出来,而且还没写完。。。。
博客好长时间没有更新了,开学以后就着手 ISCTF 的联合新生赛,也体验了一把校级活动的复杂流程,复杂到什么程度?
比赛都开始了,学校都没审核完文件下发班级。
还有加学分、奖品采购等等事项,都需要在学校里忙。
举个例子:
奖品要便宜、要有面子、不能太俗…
最近状态也有点变化,深深地认识到了自己有多菜。
还是按照之前的计划,PWN 停一段时间,专心把四级过了,之后就可以有更多的时间去学技术。
今天也是,四级的翻译笔记;
1 英汉差异对比
2 汉语意合、英语形合
汉语意合不需要逻辑关系词:
我喜欢你,我要和你交朋友
I love you, I will make friend with you.这样写洋人会一脸蒙的看着你,因为他们理解不了
正确的应该是:
I love you , so I will make friend with you.
3 句子结构上
英语多长句,汉语多短句。
汉语短句加长的三种方法:
3.1 非谓语动词
多个句子合成一个句子,只能有一个动词,选最重要的做谓 ...
西湖论剑2021WP-👴🚪的第二次出征
爷们的自留地
事情的起因很简单:
起初是👴🚪想和各位👴线下面基,想看看哪个比赛容易进线下;
然后在风和🌞丽的某一天,群里突然出现了西湖论⚔️的邀请函;
至此,👴🚪面基的想法就变成了,去西湖击剑。
👴🚪拼了命的上分,然后静止在了43名,差十三名才能进线下。
明年再来吧,还有 HWS 的冬令营能面基,并不是对击剑的执著,而是对 ctf 的热爱。
做出了一半的题目,这里把👴🚪写的wp放上来,记录一下。
(不要问👴明明是个pwn✋为什么打了一天MISC,问就是太菜了)
MISC
签到 By-Da1Da1A0E
图书馆社死,喊了好多次:
YUSA的小秘密 By-Shangu
首先,从提示就能想到这道题大概的考察点,LSB加上不止RGB,说明采用的不是RGB,参考Bytectf2020的第一道图片题:https://bytectf.feishu.cn/docs/doccnqzpGCWH1hkDf5ljGdjOJYg#qHRUCR
那道题的思路是,转换 YCrCb 通道,再提取出 三色道,分别是三张二维码片段,最后手动拼接一下或者合成都可以。
参考那道题的思路,首先对Y ...
数据结构与算法-Prim及Kruskal算法分析
0-Preview
调试堆相关内存分配时,发现每一个非物理相邻的被 free chunk 的数据结构会有所变化,可能是为了方便 bin 管理?
刚好最近数据结构学到了有关的知识,来分析一下两种算法的设计。
(草稿阶段,完善后会删掉这句话,严谨来讲本文不一定正确。)
1-Prim算法
🔑算法设计思想:
从任意一顶点 v0 开始选择其最近顶点 v1 构成树 T1,再连接与 T1 最近顶点 v2 构成树 T2, 如此重复直到所有顶点均在所构成树中为止。
📖算法步骤:
1.先选中一个顶点作为已选顶点,放到集合中。
123456C++#include<stdio.h>#define MAXN 1000/*二维数组存储 采用邻阶矩阵数据*/int input[MAXN][MAXN];int sign[MAXN]= {0}; // 标记sign数组 初始化全为0 ,1表示已经加入已选列表
2.选择图中距离这棵树最近但是没有被树收录的一个顶点,把他收录在树中,并且保证不构成回路.
1234C++for(int i=1; i<=n; i++) { ...
彳亍 不 彳亍
彳亍 不 彳亍
这篇文章很早就想着手写了,碍于事务繁忙,自己的见识还不足以支撑起整篇文章,很容易会产生一种我不彳亍的感觉,经过小半年内的沉淀,我终于动笔了。
计算机专业到底彳亍不彳亍?
以及目前大部分的学习方法,
彳亍?还是不彳亍?
计算机彳亍
👴以为,计算机注定是未来,不可能不彳亍。
无论是什么方向,开发、算法、运维、安全等等都是彳亍的!
没有任何事务可以阻挡人类的前进。这句话是👴说的。
无论是资本家的榨取,还是其他的原因,都挡不住 大量的人才涌入,因为不是所有人都长着同一个脑子。
会有人去填补脏活累活,即便💶很少。
老师小学就教育我们,人 无 贵 贱 之 分。
就像我曾经的一位朋友:
高喊着
“我就是为清洁工而生的!我要当一名城市的清洁工!娶一个清洁工!我们可以一起打扫卫生。”
也有曾聊过的路人:
“我的未来啊,我想去西藏徒步,想去大理,想去所有的没多少人去过的地方。
等等之类的例子,相比都能在自己身边找到几个。
这就引出了第二个问题“ 梦想/目标 ”
明明👴在讲 计算机 为什么突然扯到了 梦想 ? 既然扯到了梦想为什么不扯上 爱情?
梦想/目标 彳亍不彳亍?
人 ...
PWN堆学习笔记and《男酮群日常》
堆!
实际上我开始学堆已经一个月了,但是网上实在找不到我能看懂的描述。导致现在还没入门。。。。
也是最近找到了一个不错的视频,跟着手把手敲一遍。
调试调试,记录一下笔记。
1-堆漏洞和栈溢出的不同
堆溢出不像栈溢出可以劫持程序流,直接控制程序流程。也不像格式化字符串一样狙击式攻击。他主要通过利用漏洞获取一个可以任意写的 chunk ,通过该 chunk 进行内存关键地址(GOT表,HOOK)的改写,进而达到一定目的。
1.1-堆溢出
⭐️堆溢出和栈溢出一样,重点在于溢出,重点在于溢出!!!
⭐️通过堆溢出,你可以修改下一个 chunk 的关键信息如 chunk 头中的信息,如果下一个 chunk 是 free 状态你甚至可以修改他的 bk 和 fd 字段进行攻击。
1.2-DOUBLE FREE
一个 chunk 被 free 后并没有把指针置 NULL,导致可以再次 free,这样会导致有两个指针指向同一个 chunk,如果有这样的事情,可能会泄露出地址内存,或者修改 BK 和 FD 指针。
1.3-UNLINK
此漏洞可以导致你拥有可以在任意可读写地址进行读写的能力!!!
2-利用 ...
莲城杯PWN-ret2syscall
0-Preview
👴终于开学了,但是神奇的是,没时间学 PWN 了。现在天天满课,还都是专业课,非常离谱。
仔细思考了一天,决定还是认真学一下数据结构,毕竟搞 PWN 和 RE 还是要算法基础的,今天听老师讲双链表对我学堆就很有收获。
数据库的话,对我的职业规划而言还是未知的,暂且保持观望吧。
除非有大事,我一般不会断更,一天的学习时间也就晚上的两个小时。周末文章篇幅才会长。
也就会更新四种文章:勾八文、比赛WP、PWN和数据结构、旅游记录。
1-栈溢出新姿势
打 软🐮子杯 (某个否认👴中国公民身份的比赛)遇到的PWN题,没见过这种,记录一下:
直接上 IDA分析吧,最迷惑的就是这个部分了。
首先就是这堆莫名其妙的函数,数量极其庞大,还有乱七八糟的字符串:
**
这些字符串一度让我怀疑我是不是下载错附件了,一个栈溢出的题里面出现堆的各种东西。
忽略这些扰乱思维的东西,我们跟进主函数看一下有没有啥漏洞。
这里有一个危险函数 gets() 可以输入任意字符串,由于是引用 name 所以不能直接修改 gets 函数的返回地址,说不了之后可以起到作用。
这里有个 fun(v1 ...
ISCC奇幻冒险-喷射战士
0 Preview
事情发生于 6月18日,本文写于 10月8日。(太懒了
本章为ISCC奇幻冒险的第二章,一年只出两章,因为也就线上线下两篇。
👴的ISCC线上赛成绩还是非常好的,个人赛全国第50,擂台赛全国第五(貌似是的),毕竟是奇幻冒险,排名什么的无所谓,👴也不是很在意这些。(并不是因为TMD河南没有线上赛的奖状。
线上成绩很好,就意味着学长们出去打线下赛要带我。
有这么好的学长真是太幸福了!
吃吃吃,玩玩玩!
喷射!喷射!
1-开封
这是我第一次来到开封,中国版图点亮 +1
就这一张图一路在车上下车就到河南大学了。
河南大学,密码👴 striving 的学校,好看,好大。我是土狗我没见过世面
2-第一顿饭
👴🚪的比赛是在第二天,晚饭是老师定的饭店(据说是开封很有名的一家)
现在回想起来,这顿饭就一个结论:👴是土🐶
大致聊天是这样的:
👴:这是啥?西瓜皮吗?油炸西瓜皮?
奇点👴:那是茄子,土狗。
👴们吃了开封锅贴,别急先让我去找找照片,现在距离那顿饭已经过去四个月了。
各种小笼包,还有一些大菜,具体的也记不清了。看图吧:
这是其中一桌的,好像那时候 ...
pwn-堆入门-祝👴生日快乐!
0-Preview
我的进度有点快了,之前的ret2系列和各种保护绕过还没学。
直接跳过来学堆,这也是没办法的事,五天后就有一场比赛。
打好了可以去重庆决赛;可以次火锅儿~
我现在终于是明白了为啥堆难学了。我现在都还没找到一个系统讲堆的视频或者博客。
都是 ctf-wiki 或者学习 ctf-wiki 的笔记。这很玄学,也证明了这玩意儿真的难学。
接下来也快带学弟了,我会尽全力把博客写的完整一些,通俗易懂一些(前提是我能学会
差点少了精髓:
👴
1-Heap(堆)是什么
这个上一篇差缺补漏环境大概描述了一下:数据段
在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。我们一般称管理堆的那部分程序为堆管理器。
堆管理器处于用户程序与内核中间:
响应用户的申请内存请求,向操作系统申请内存,然后将其返回给用户程序。同时,为了保持内存管理的高效性,内核一般都会预先分配很大的一块连续的内存,然后让堆管理器通过某种算法管理这块内存。只有当出现了堆空间不足的情况,堆管理器才会再次与操作系统进行 ...