House of Orange
House of Orange前言House Of Orange 核心就是通过漏洞利用获得 free 的效果
这种操作的原理简单来说是当前堆的 top chunk 尺寸不足以满足申请分配的大小的时候,原来的 top chunk 会被释放并被置入 unsorted bin 中,通过这一点可以在没有 free 函数情况下获取到 unsorted bins
后续可以配合 unsorted bin attack 和 FSOP 获取 shell
利用条件
有堆溢出,可以修改 top chunk size
可以申请较大的空间
没有释放模块(看见程序没有 free,realloc等函数时,优先考虑打House Of Orange)
伪造的 top chunk size 的要求 :
0x0fe1、0x1fe1、0x2fe1、0x3fe
利用姿势
通过堆溢出修改 top chunk size为“0x0fe1”
申请“0x2000”的空间
版本影响
libc-2.23:可用打通
libc-2.24:增加了 vtable check,但仍然可以绕过
libc-2.27:完全失效
实战pwn450 ...
house of apple
house of apple简介House of apple 是 roderick01 师傅在 2022 年 7 月提出的一种新型的 IO 利用思路,总共提出了三种调用方式,分为了 House of apple1、House of apple2、House of apple3,这三种调用方式都是基于 roderick01 师傅发现的新调用链:IO_FILE -> _wide_data
前置基础在 libc2.34 以上的高libc版本中,glibc 逐渐将许多 hook全局变量移除了,包括 _malloc_hook / _free_hook / _realloc_hook ,这就导致我们无法在向从前那样利用 hook 作为钩子函数来 getshell 了,所以到了高版本,堆利用便离不开对 _IO_FILE 的伪造和对 IO 流的劫持
在 House of apple 之前的高版本 IO 利用方式有(详细可以见我之前写的几篇文章):
House of pig :多手法联合IO利用之House of pig 学习利用
House of kiwi & House of emm ...
GZCTF搭建过程
GZ::CTF搭建过程前言该文章是为了后面方便自己复现GZCTF环境的搭建做的一篇笔记。
GZ::CTF
GO语言学习入门
GO语言学习入门前言很久以前就想学GO了,但是由于其他原因没有开这个,现在刚好有关于逆向go语言的任务,也不算逆向,就是逆向go语言源代码,顺便了解一下GO语言的开发
GO前言Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
GO语言的开发工具VScodevscode安装好后,打开vscode的扩展(ctrl+shift+P)
搜索GO
点击安装后,我们就可以使用代码提示和调试功能了
GOLandGoLand ...
GOT表和PLT表浅解
动态链接
这里引用一下大佬的比喻。如果我的文章引用了别人的一部分文字,在我发布文章的时候把别人的段落复制到我的文章里面就属于静态连接,而做一个超链接让你们自己去看就属于动态链接了
1.PLT表和GOT表GOT表:
每一个外部定义的符号在全局偏移表(Global offset Table)中有相应的条目,GOT位于ELF的数据段中,叫做GOT段。也可以叫做全局函数表。
PLT表:
过程链接表(precedure Linkage Table)也叫内部函数表。
为了程序的轻量化,出现了动态链接,动态链接是在运行时进行重定位。在编译的时候在对应需要进行引用函数的时候用plt表来代替。
由于运行时的重定位不能修改代码段,只能去修改数据段。
可执行文件里面保存的是对应plt表的地址,plt表指向对应的got表。got表保存对应的glibc的地址。
2. 延迟绑定
由于动态链接是由动态链接器在程序加载时进行的,当需要重定位的符号(库函数)多了之后,势必会影响性能。延迟绑定(lazy bingding)就是为了解决这个问题的。 ...
GoogleCTF2023复现
GoogleCTF2023复现WRITE-FLAG-WHERE题目描述
This challenge is not a classical pwn In order to solve it will take skills of your own An excellent primitive you get for free Choose an address and I will write what I see But the author is cursed or perhaps it’s just out of spite For the flag that you seek is the thing you will write ASLR isn’t the challenge so I’ll tell you what I’ll give you my mappings so that you’ll have a shot.
解题过程该程序提供了一个可以任意地址写入flag的功能,于是我们思考如何才能把flag写入到一个能输出的位置即可,当我们直接通过写/proc/sel ...
git和github使用
git和github使用Git和GithubGit是一个运行在电脑上的版本控制软件,而Github是基于Git这个版本控制软件打造的网站。
Git有助于多人协作和版本控制
Git的三个概念:提交commit,仓库 repository ,分支 branch
开源项目寻找指南找开源项目的一些途径• https://github.com/trending/• https://github.com/521xueweihan/HelloGitHub• https://github.com/ruanyf/weekly• https://www.zhihu.com/column/mm-fe
查找资源特殊的查找资源小技巧-常用前缀后缀• 找百科大全 awesome xxx• 找例子 xxx sample• 找空项目架子 xxx starter / xxx boilerplate• 找教程 xxx tutorial
教学视频https://www.bilibili.com/video/BV1e541137Tc/?spm_id_from=333.337.search-card.all.cli ...
gitee代替github来解决git clone慢的问题
gitee代替github来解决git clone慢的问题对于国内用户来说,搬砖遇到clone Github速度十分缓慢的问题实在是一个令人头疼崩溃的问题。
下面就介绍一个简单的方法很好的解决这个问题。
0x1创建账户传送门
创建账户简单就不教了。
0x2导入仓库
点击“+”新建仓库。
点击导入按钮。
输入要到导入仓库的url。
导入成功后就可以用自己的url代替github的url了。
0x3快乐git
GFW(长城防火墙)的工作原理和封锁技术
GFW(长城防火墙)的工作原理和封锁技术GFW是Great Fire Wall的缩写,即“长城防火墙”。这个工程由若干个部分组成,实现不同功能。长城防火墙主要指TG监控和过滤互联网内容的软硬件系统,由服务器和路由器等设备,加上相关的应用程序所构成。
首先,需要强调的是,由于中国网络审查广泛,中国国内含有“不合适”内容的的网站,会受到政府直接的行政干预,被要求自我审查、自我监管,乃至关闭,所以GFW的主要作用在于分析和过滤中国境内外网络的资讯互相访问。
GFW对网络内容的过滤和分析是双向的,GFW不仅针对国内读者访问中国境外的网站进行干扰,也干扰国外读者访问主机在中国大陆的网站。
先来科普下 GFW 是怎么挡住我们的: []关键字过滤 []IP 封锁 []DNS 污染、劫持 []特定端口封锁 [*]加密连接的干扰
我们一条条来看:
[*]关键字过滤
大家都知道,比如 Http 协议数据包头部是明文的,所以 GFW 一旦发现连接有敏感词,马上就会伪装成连接两方,向真正的对方发送 RST 数据包,真正的双方一看,出现异常了,那把连接关闭吧。所以,有时候你会发现有的页面正在打开,然后过了 ...
GDB的常见用法
GDB的常见用法1. 编译文件1gcc -g test.c -o test
编译时默认不会把debug选项加进去,需要在编译时手动添加-g来加入debug。
运行GDB,用file来指定文件。
2.常见用法
b(breakpoint)
在函数下断点。
b 行数
在文件的第几行下断点。
r (run)
run程序,在即将执行断点之前停下。
n(next)
不进入函数的单步执行。
回车
执行上一步的命令。
s(step)
进函数的单步。
k(kill)
kill当前进程。
info b
查看当前断点。
d 符号
除去符号处断点。
c
直接执行到下一个断点。
bt
查看函数调用栈。
watch point
监视某一个变量,运行到变量变化的地方停下。
info r
查看所有寄存器的值。
info variables
打印所有符号。
p(print) point
查看变量值。
/x
以十六进制输出。
layout src
以图形化模式的c语言gdb。以ctrl+x,a退出。
layout split
显示源代码和汇编指令窗口
la ...