Alex博客介绍 本博客由华南师范大学AlexD创建 希望大家能在这里学到更多 (更多是希望能带带新手呐) tips 由于本人为软件工程专业的ctfer, 所以博客中不只有pwn, 也有软件项目的相关内容 搜索时, pwn有关文章题目由’pwn:'开头 软工项目有关由’sw:'开头 sw指software 所有的内容都有标签等进行分类, 可以快捷查看 本网站支持rss, 可以用rss阅读器订阅噢! https://alexdkfighter.github.io/atom.xml 大家也可以去我的github看看(头像下面就有) 更多请到关于 联系方式 本人邮箱: 1369524258
Ropper Ropper是ROPgadget在大程序下的替代,有更快的检索速度,pwn手基本上都会使用 比如在某些题目中,我们可以获得libc基址,但是程序中缺失scu等,缺少rop链的条件。迫于无奈,我们只能在libc中寻找以构造rop链,这个时候我们使用Ropper会有相当好的效果 Ropper的命令 安装: 我使用的是kali的wsl安装方式相当简单 1apt install ropper 运行: 直接运行ropper进入Ropper环境 执行file命令以载入libc文件 在这里我使用的是本机的libc做演示 命令: gadgets命令会列出所有的gadgets,实
沙箱,用来控制shellcode的。在函数中会有sandbox函数。 我们用Newstar的一个题为例子讲解。 如何查看沙箱 检测工具seccomp-tools 安装: sudo apt install gcc ruby-dev sudo gem install seccomp-tools 使用: seccomp-tools dump ./pwn 这样可以看到我们被禁止使用的函数有3个:sendfile、execve、exeveat 题目例子 Easy_Shellcode 1234567891011121314151617181920212223242526272829303132
canary爆破原理 对于Canary,虽然每次进程重启后Canary不同,但是同一个进程中的不同线程的Cannary是相同的,并且通过fork函数创建的子进程中的canary也是相同的,因为fork函数会直接拷贝父进程的内存。而且fork在canary报错之后会重新运行,不会改变canary。 所以见到fork大概率是canary爆破的问题。 fork即子线程创建函数: 在父进程中,返回新创建的子进程的PID。 在子进程中,返回0。 如果发生错误,fork 返回-1,父进程会获得一个负值。 题目示例 我们用NewStar的题目来做示例。ezcanary 可以发现源代码中有fork,
也是今天刚搞懂,先写了再说 使用的原因 其实csu指的是每个程序一定会有的函数: libc_csu_init 我们以这个ctf-challenge中的例子学习ret2csu 这是IDA逆向之后的csu函数的一部分 也是我们所需要的部分 我们可以看到下面的pop可以帮我们控制寄存器, 同时,上面的mov也可以补充下面无法控制的部分寄存器 当然,你应该也发现了我的示例里有两个脚本,exp1没有使用csu, 而是直接控制了寄存器,这是因为在这个示例里rdx的值足够大(大于8),也就足够输出我们需要的got表值了。如果在其他情况下,那exp1则是无效的。 还有一点就是,我的示例里用的是我本地的
今天在学fmt,觉得自己会忘记,写下这个 格式化字符串对应的转义 %d :十进制,输出十进制整数 %s : 字符串,从内存中读取字符串 %x : 十六进制,输出十六进制数 %c : 字符串,输出字符串 %n : 到目前为止缩写的字符串数 %p :输出指针所指的值(常用) 64位的大整数覆盖地址 我们直接从题目开始做 fmt_64 这个文件夹里已经有我的脚本了 做题之前记得将libc指定为里面给的 我们从这个题目将栈上的fmt彻底讲完 该题目为2024Newstar的EZ_fmt 我们先checksec一下 我们发现他没有开PIE,(我们可以直接调用里面的地址) RELRO也没绿 (我们可
复现题目: NewStar 西电CTF需要装WSRX来创建动态容器 赛事 - Review::CTF 另外:(我还没做的) 首页 | NSSCTF CTFHub 首页 - Bugku CTF平台 BUUCTF在线评测 Crypto: HvAng师傅! SageMath10.x最新版安装指引 | HvAng’s Nests 跟着这个就可以装SageMath了,换好源之后就不会有问题了 Pwn入门知识库: PWN入门(1-1-1)-C函数调用过程原理及函数栈帧分析(Intel) 里面的题目附件如果是github的,建议用git直接克隆下来 比如wiki的ctf-challenge的附件,
基础部分 其实在之前也有给过推荐的一个视频 在Github上传你第一个项目【windows系统】(bilibili) 跟着这个基本就可以正常使用git的部分功能了,下面是常用的命令 项目初始化: 12345#http克隆,也可以用github的ssh替代这里的网址git clone https://example.com#如果是自己的项目,自己建的git init 添加远程仓库: 将GitHub仓库添加为远程仓库。假设你仓库的URL是https://github.com/username/repository.git: 1git remote add origin https://gi
pwn环境建造 linux系统 我们在pwn方向,linux是必须的 我们有以下两个选择 wsl (windows下的linux系统子系统) VM 虚拟机 linux系统也有选择,通常情况下可以选择Ubuntu系统(出题人基本上都是Ubuntu编译) 虽然我一直用kali 而且对于密码手而言,Arac linux 才是最优选择 (因为装sagemath更方便) wsl 直接在微软商店搜索自己希望下载的linux系统, 下载即可 安装好之后就是可以使用的linux命令行 (windows10以来使用的为Terminal同一管理各种控制台) 可以去自己设计控制台的样式: 右上角下箭头