Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

(缓慢更新中1/4) Novice Challenge 一句话版本:改strlen的got表 首先从sub_96B中泄漏libc地址: int sub_96B() { int v1; // [rsp+Ch] [rbp-264h] BYREF __int64 v2[44]; // [rsp+10h] [rbp-260h] BYREF char v3[252]; // [...

heap-zero /* * phoenix/heap-zero, by https://exploit.education * * Can you hijack flow control, and execute the winner function? * * Why do C programmers make good Buddhists? * Because they'...

这两道似乎没有x86_64的解法。 format-three /* * phoenix/format-three, by https://exploit.education * * Can you change the "changeme" variable to a precise value? * * How do you fix a cracked pumpkin? Wit...

新的章节讲的是利用格式化字符串漏洞的故事。 format-two全是x86的题解,找了半天才在一个评论区里找到如何回避x86_64下\x00的坑 format-zero 本题源码 /* * phoenix/format-zero, by https://exploit.education * * Can you change the "changeme" variable? * ...

听说把这段写进~/.gdbinit里面会让栈的情况更加真实(在调试的时候) (参考https://n1ght-w0lf.github.io/binary exploitation/stack-six/) unset env LINES unset env COLUMNS set env _ /opt/phoenix/amd64/stack-six 然后这是本题源码 /* * phoe...

最近又是数模又是开学的,很难受,还是看看远方的水入门题吧。没有动态基址,还是比较简单的。 (写这段的时候还没想到接下来还有概率论考试,还打了场ctf校赛,所以。。。) stack-three 覆盖一个即将被调用的函数指针的数据,跟前面差不多。 from pwn import * shell = ssh("user", "localhost", pas...

这两道非常简单,而且只有数据读入方式的区别。跟zero一样,只是对覆盖的数据有要求。 stack-one 将程序第一个参数strcpy到字符串。 在gdb中run后面直接接参数即可带上参数。 pwntools的sh.run可以接收字节数组作为参数,里面可包含启动参数。(看了下文档,对于run方法:Backward compatibility. Use system() ) from p...

找到一个学习pwn的项目http://exploit.education ,决定让我临时抱佛脚学的pwn走向正轨,试试开个笔记系列(每次pwntools脚本都忘记怎么写),希望不要半路弃坑。定个小目标,至少把Phoenix系列做完吧。 环境配置 首先在more-downloads里下载phoenix的虚拟机系统镜像,根据你的架构选择。这就是靶机。在启动之前,我们需要安装qemu-syste...

看从零到一第一遍有没懂的地方记录一下 长篇大论: 现代操作系统往往有比较完善的MPU机制,可以按照内存页的粒度设置进程的内存使用权限。内存权限分别有可读(R)、可写(W)和可执行(X)。一旦CPU执行了没有可执行权限的内存上的代码,操作系统会立即终止程序。 在默认情况下,基于漏洞缓解的规则,程序中不会存在同时具有可写和可执行权限的内存,所以无法通过修改程序的代码段或者数据段来执行任意代码。...