Pwn - Format String Summary
总结一下格式化字符串漏洞,便于后续调用
原理 & 工具
原理
本质是利用 printf(string) 任意地址读写
记录一下常用的格式
123456fmt : 标准作用 || 常用方式——————————————————————————————————————————————————————————————%p : 输出栈上的内容 | (读) 找偏移\pie_base\canary%s : 输出地址指向的内容 || (读) 泄露libc_base%hhn : 修改地址指向的byte | (写) 任意地址写%hn/%n : 修改地址指向的2/4bytes | (写) 任意地址写
工具: Pwntools -
fmtstr_payload
Pwntools -
class fmtstr
源码见上述链接或文章末尾的 Appendix
fmtstr是一个类,我们只需要用其中的...
2023CCS-Acquirer 算法复杂性漏洞论文阅读笔记
在做项目,记录一篇论文的阅读笔记
摘要
JAVA程序中的AC漏洞
一. 引言
一些AC漏洞例子 Decompression Bombs:
https://en.wikipedia.org/wiki/Zip_bomb Bilion Laughs Attach:
https://en.wikipedia.org/wiki/Billion_laughs_attack ReDoS:
https://en.wikipedia.org/wiki/ReDoS Hash-table DoS Attack:
https://fahrplan.events.ccc.de/congress/2011/Fahrplan/events/4680.en.html
Zip Bomb:
https://www.theregister.com/2001/07/23/dos_risk_from_zip/
目前存在的一些问题 state...
comp - 2023HwsSDU专场CTF-wp
HWS!PWN+RE+CRYPTO
RE
Re
这个题本来打好逆向后的包准备写 wp
的,结果重新加载的时候给覆盖了...就不配图了,函数顺序按照反汇编从上到下来分析的。
拿到这个题看到有反调试,没 patch ,直接静态分析了
- 1st important function
第一个重要函数里有一个 flag{} 的判断,还有一个对于'-'的判断,可以猜测
flag 的格式为 flag{uuid}
接下来的一个函数有花指令,把 E8 改成 90
以后重新反汇编,还是没有啥东西...为了不影响后面做题,还是回到一开始的地方把
jz 改成了 jnz
,然后动调发现这个带花的函数基本没啥用,好像就调用了个__chkesp函数,但我不太清楚这是干啥的,就直接忽略了
- 2nd important function
第二个重要函数对我们输入的...
IOT - 某路由器mips固件解密脚本复现
期中终于结束了😭复现一下b站Wker666的固件解密
第一次分析IOT固件,不当之处请指出😭
0xFF 前置知识
多数情况下,路由器固件解包以后我们会拿到一个类似于 Linux
文件系统的文件夹,这个文件系统会跑一些三环程序,而三环程序有非常多的系统调用,因此我们希望通过这些三环程序来提权。
现在很多厂商会认为,自己的路由器能被解包太不安全了,因此他们会通过加密,但是每次更新换代时,后一代的固件包都是通过前一代的固件中的某个解密算法来解密的。因此,我们在挖掘
IOT
漏洞时,会先找到比较老的一些版本,分析解密算法,进而自己写出解密脚本来解密新一代的固件包。
(建议看到0x01后再来阅读本条)我们在路由器的 web user
上发送一个更新请求的时候,客户端会先发给服务器一个 http
请求,然后被服务器的 httpd 二进制文件接收,httpd 会 fork
一个新的进程来启用二进制文件 cgibin ,并把环境变量和 http 的请求发给 cgi
,...
Angr Learning Note
迈向自动化的第二步——
0xFF Reference
1. Symbolic
Execution Leaning Note (1) -- Basis
2.
2020年Angr-Api非官方介绍
3.
angr_ctf里介绍angr的ppt(讲的真的挺好的)
0x00 Recall-Symbolic
Execution
笔者水平有限,如有错误请指出 ;-)
我们先回顾一下什么是符号执行:
我们在逆向一个程序、去找一个程序的漏洞时,我们会希望找到一个input,来触发我们需要的漏洞或者找到我们需要的flag,而符号执行的功能就是通过遍历程序所有可能的“状态(State)”,找到我们需要的State,进而通过约束求解器,求解出我们最后需要的input
宏观上看,符号执行可以分为三步
1. 注入符号 2. 分支 3. 执行分支
我们用一个简单的函数来分别看一下这三步是什么 123456789// demo funcLine1 void check_func(char* passwd)Line2 {Line3 ...
comp - 2023香山杯Pwn & RE-wp
香山杯!Pwn ak + RE 差几分钟就写完xxTEA啦😭
RE
url从哪儿来
断点下在这,知道他会在buffer指向的地址生成一个文件,让程序跑完,能看到这个文件
ida打开,因为它问url是什么,所以我们直接看szurl
结果这个不是flag,看到url问我们是如何解密的,所以我们回到上面那一堆数据里面,我们看一下v13
flag就在这...
Symbolic Execution Leaning Note (1) -- Basis
迈向自动化的第一步——
0x00 基本模型
概述
1234561 void sum(a,b){2 int x = a;3 int y = b;4 int z = x + y;5 return z;6 }...
comp - 2023SICTF-Pwn-baby_heap-wp
baby一点都不baby...houseoforange+unsortedbinattack
0x00 逆向分析
main函数很简单,1申请2编辑3打印,但是没有free,google'no free
pwn'了解到有可能是houseoforange
add函数,两个约束(1. 最多申请32个chunk 2.
chunk最大为0x1000),跟进chunk_size和chunk_ptr后发现两者在bss段挨得很近,所以这里其实可以伪造fake_chunk,后续可以考虑用fastbin
attack或者unsortedbin
attack来打(但这里没有free,就导致fastbin很难利用)
edit函数
show函数,只打印了8个字节就很难受
0x01 思路分析
我们肯定是要实现“leak libc”和“Any Address Write”
leak libc
思路1:unsortedbin...
comp - 2023第七届蓝帽杯初赛Pwn-takeway-wp
学艺不精...对于"读/写函数对指针的利用"没那么敏感(
0xff 说在前面
下文EXP中,leak堆地址的部分需要"伪爆破",如果报错的话多运行两三次脚本,直到heap_addr为四字节时即可成功运行
题目地址下载口令:
7c9pe6
0x00 Exploitations
tcachebin libc2.31
tcachebin poisoning
版本判断
tcache有key混淆,则是2.31以上(不包含2.31)
tcache有doublefree检测,则是2.28以上
有tcache,则是2.26及以上
UAF
利用题目提供的堆表+puts/read进行任意地址读写
0x01 反汇编修改
首先进行一个反汇编的读
trick: IDA中对变量按Y键可以改变变量类型
alloc:
strcspn是从字符串中返回不含“所查找字符”的子字符串的长度 delete:
指针未置零,一眼UAF modify
0x02 分析与思路构造
分析部分
分析alloc:...
Pwn - Practice1
练习题 wp 记录
目录
Tools in pwn
buuctf
babyheap_0ctf_2017
buuctf
ogeek2019babyrop_wp
buuctf
hitcontraining_bamboobox
buuctf
hitcontraining_uaf
buuctf
hitcontraining_magicheap
buuctf ciscn_2019_n_3
buuctf
babyfengshui_33c3_2016
buuctf
hitcontraining_heapcreator
buuctf hitcon2014_stkof
buuctf jarvisoj_level5
buuctf ciscn_2019_es_7
0x00 Tools in Pwn
pwndbg
gdb.attach(io,'xxx')
xxx 为 GDB 的调试语句,比如'b main' 或者 'n 285'
gadgets
ROPgadget
面向 elf...