置顶
2024-12-17
204 字
1 分钟
Alex介绍
Alex博客介绍
本博客由华南师范大学AlexD创建
希望大家能在这里学到更多
(更多是希望能带带新手呐)
tips
由于本人为软件工程专业的ctfer, 所以博客中不只有pwn, 也有软件项目的相关内容
搜索时,
pwn有关文章题目由’pwn:'开头
软工项目有关由’sw:'开头
sw指software
所有的内容都有标签等进行分类, 可以快捷查看
本网站支持rss, 可以用rss阅读器订阅噢!
https://alexdkfighter.github.io/atom.xml
大家也可以去我的github看看(头像下面就有)
更多请到关于
联系方式
本人邮箱: 1369524258
2025-01-09
577 字
2 分钟
pwn: 沙箱入门
沙箱,用来控制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
2024-12-27
324 字
1 分钟
pwn: canary爆破
canary爆破原理
对于Canary,虽然每次进程重启后Canary不同,但是同一个进程中的不同线程的Cannary是相同的,并且通过fork函数创建的子进程中的canary也是相同的,因为fork函数会直接拷贝父进程的内存。而且fork在canary报错之后会重新运行,不会改变canary。
所以见到fork大概率是canary爆破的问题。
fork即子线程创建函数:
在父进程中,返回新创建的子进程的PID。
在子进程中,返回0。
如果发生错误,fork 返回-1,父进程会获得一个负值。
题目示例
我们用NewStar的题目来做示例。ezcanary
可以发现源代码中有fork,
2024-12-22
575 字
2 分钟
pwn: ret2csu
也是今天刚搞懂,先写了再说
使用的原因
其实csu指的是每个程序一定会有的函数: libc_csu_init
我们以这个ctf-challenge中的例子学习ret2csu
这是IDA逆向之后的csu函数的一部分
也是我们所需要的部分
我们可以看到下面的pop可以帮我们控制寄存器,
同时,上面的mov也可以补充下面无法控制的部分寄存器
当然,你应该也发现了我的示例里有两个脚本,exp1没有使用csu,
而是直接控制了寄存器,这是因为在这个示例里rdx的值足够大(大于8),也就足够输出我们需要的got表值了。如果在其他情况下,那exp1则是无效的。
还有一点就是,我的示例里用的是我本地的
2024-12-19
916 字
3 分钟
pwn: 栈上的fmt
今天在学fmt,觉得自己会忘记,写下这个
格式化字符串对应的转义
%d :十进制,输出十进制整数
%s : 字符串,从内存中读取字符串
%x : 十六进制,输出十六进制数
%c : 字符串,输出字符串
%n : 到目前为止缩写的字符串数
%p :输出指针所指的值(常用)
64位的大整数覆盖地址
我们直接从题目开始做
fmt_64
这个文件夹里已经有我的脚本了
做题之前记得将libc指定为里面给的
我们从这个题目将栈上的fmt彻底讲完
该题目为2024Newstar的EZ_fmt
我们先checksec一下
我们发现他没有开PIE,(我们可以直接调用里面的地址)
RELRO也没绿 (我们可
2024-12-18
251 字
1 分钟
ctf: 几个推荐的链接
复现题目:
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的附件,
2024-12-18
632 字
2 分钟
sw: git入门使用
基础部分
其实在之前也有给过推荐的一个视频
在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
2024-12-17
1.2k 字
4 分钟
pwn: pwn环境
pwn环境建造
linux系统
我们在pwn方向,linux是必须的
我们有以下两个选择
wsl (windows下的linux系统子系统)
VM 虚拟机
linux系统也有选择,通常情况下可以选择Ubuntu系统(出题人基本上都是Ubuntu编译)
虽然我一直用kali
而且对于密码手而言,Arac linux 才是最优选择 (因为装sagemath更方便)
wsl
直接在微软商店搜索自己希望下载的linux系统, 下载即可
安装好之后就是可以使用的linux命令行 (windows10以来使用的为Terminal同一管理各种控制台)
可以去自己设计控制台的样式:
右上角下箭头