- 博客(6)
- 收藏
- 关注
原创 CTF-PWN入门——32位和64位程序的函数传参规则
在32位程序中,采用传递参数。即函数的参数是在栈中的,结构如下:即:①首先需要填充垃圾数据(padding)直至完全覆盖栈底"ebp",此时即将开始覆盖"返回地址"实现执行流的劫持②劫持返回地址,在"返回地址"中覆盖成需要程序执行的目标函数,如system()③继续覆盖4字节的"函数调用返回地址",即执行完被劫持的system()后应该返回到哪里,通常此处可以填写main函数或其他有需要在执行完system()之后执行的函数,也可以直接填充4字节的垃圾数据。
2026-01-20 19:40:47
100
原创 [BUUCTF-PWN] jarvisoj_level2
在程序的main函数下的vulnerable_function中,read函数接收用户输入0x100字节的数据存入buf中,但buf的长度只有0x88,因此这个地方存在溢出漏洞,可以通过溢出覆盖栈中的返回地址劫持程序执行流。通过IDA的字符串窗口(快捷键:Shift+F12),可以定位到程序存在"/bin/sh"字符串,且在main函数和vulnerable_function函数中均有调用system函数。
2026-01-20 19:22:56
806
原创 [BUUCTF-PWN] [第五空间2019 决赛]PWN5_格式化字符串
在正常情况下用户输入的值与随机生成的随机值恰好相等的概率是极低的,而在main函数的第21行中printf(buf)是明显的格式化字符串漏洞,对于格式化字符串漏洞的利用主要包括:①使程序崩溃、②栈数据泄露、③任意地址内存泄露、④栈数据覆盖、⑤任意地址内存覆盖。因此,可以通过格式化字符串漏洞对dword_804C044处的随机值进行覆盖,覆写成一个固定值,从而实现对随机值的控制,此时用户只需输入预设的固定值,即可完成数据的比对从而getshell。
2026-01-14 16:26:40
404
原创 [BUUCTF-PWN] jarvisoj_level0
1、程序为64位程序,在main函数的vulnerable_function中,接收用户最大0x200长度的输入,但buf的大小只有0x80,存在栈溢出漏洞。2、发现存在后面函数callsystem,地址为0x4005963、因此,可直接通过栈溢出篡改程序执行流使其指向执行callsystem函数。
2026-01-12 16:52:12
47
原创 [BUUCTF-PWN] ciscn_2019_n_1
程序运行流程中,当v2等于11.28125时,将读取flag中的内容。因此需要将v2的内容覆盖成11.28125,但其为浮点类型,需要转化为其对应的十六进制形式,为0x41348000。结构如下图所示,为0x30-0x4=0x2c,即当往v1写入0x2c个垃圾数据时,刚好填满v1,即将开始填v2。1、发现存在gets函数,可导致栈溢出漏洞,其中v1长度为0x30。方法1:栈溢出直接跳转到system(“cat /flag”)2、在下方存在system函数读取flag文件,1、v1到v2的距离。
2025-10-07 19:27:39
526
原创 [BUUCTF-PWN] warmup_csaw_2016
3、双击后通过ctrl+x交叉引用,定位这个敏感字符串在sub_40060D这个地址函数中被调用。4、进一步跟踪该地址函数,发现该函数为后门函数,通过系统调用读取flag.txt。1、发现存在gets函数,可导致栈溢出漏洞,其中v5长度为0x40。2、通过shitf+F12发现敏感字符串:cat flag.txt。
2025-10-07 18:13:52
334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅