我的2022
pwn复习.md
pwn复习
gdb调试
n
步过,s
步进set args toto
设置参数- 设置寄存器值将ZF设定为1
1
2set $ZF = 6
set $eflags |= (1 << $ZF) - 为断点设置命令
1
2
3
4(gdb) command <insert the number of the first breakpoint here>
> print $al^$dl #we print al xor dl, that is to say the expected char
> continue
> end
栈布局
栈帧开辟-
下一个命令的地址 -> 上一个栈帧的ebp -> 新的栈
此时ebp 保存 <上一个栈帧的ebp> 的地址
radare2使用
- 图形模式下,按
o
进行跳转, 按u
返回到上一个函数 - third
AFL++使用
模糊测试
模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。
模糊测试最早由威斯康星大学的Barton Miller于1988年提出。他们的工作不仅使用随机无结构的测试数据,还系统的利用了一系列的工具去分析不同平台上的各种软件,并对测试发现的错误进行了系统的分析。此外,他们还公开了源代码,测试流程以及原始结果数据。
模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based)。模糊测试可以被用作白盒,灰盒或黑盒测试。文件格式与网络协议是最常见的测试目标,但任何程序输入都可以作为测试对象。常见的输入有环境变量,鼠标和键盘事件以及API调用序列。甚至一些通常不被考虑成输入的对象也可以被测试,比如数据库中的数据或共享内存。
对于安全相关的测试,那些跨越可信边界的数据是最令人感兴趣的。比如,模糊测试那些处理任意用户上传的文件的代码比测试解析服务器配置文件的代码更重要。因为服务器配置文件往往只能被有一定权限的用户修改。
heap入门2
命令
objdump -M intel -D ./heap0 | grep winner
gef➤ help search-pattern
nightmare
protostar:heap0
objdump -D heap0 | grep winner
┌─[zentreisender@parrotos]─[~/Documents/nightmare/modules/24-heap_overflow/protostar_heap0]
└──╼ $objdump -M intel -D ./heap0 | grep winner
080484b6 <winner>:
080484e1 <nowinner>:
简单的堆溢出,复制时没有检查大小
heap入门1
pwnable.kr (1)
heap入门
堆利用Heap Exploitation
https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/
https://ctf-wiki.org/pwn/linux/glibc-heap/introduction/
基础知识学习ptmalloc
命令::
gef➤ x/32gx &main_arena
gef➤ heap bins
<<基本ROP_ropemporium pivot + ret2csu
代码:https://github.com/Finsenty54/attack-code/tree/master/ROPemporium
命令
objdump -T libpivot32.so 查看所有符号
rabin2 -E ./libpivot.so 也可以查看
-E globally exportable symbols
objdump -j .text -d ./ret2csu
objdump -x ret2csu
gef➤ search-pattern 0x4004d0 查询含有0x4004d0 的地址
<<基本ROP_ropemporium 第三到四题
ROP Emporium write4,badchars,fluff
write4和badchars都解出来了,fluff找不到有用的gadget
代码:https://github.com/Finsenty54/attack-code/tree/master/ROPemporium