自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红叶的博客

Pwn 萌新。

  • 博客(50)
  • 收藏
  • 关注

原创 [Litctf 2024] Pwn WP 全部题目

劫持 __malloc_hook 打 one_gadget。使用 realloc 调整栈帧。

2024-06-03 20:28:40 1396

原创 深入理解 House of Cat

exit() --> __run_exit_handlers --> _IO_cleanup --> _IO_flush_all_lockp --> _IO_wfile_seekoff --> _IO_switch_to_wget_mode --> _IO_switch_to_wget_mode 的 call rax。当RCX为0时,程序进入了这段 if 语句。_wide_data 指向的 _IO_FILE 结构体的 _IO_write_ptr 必须大于 _IO_write_base,mode 大于0。

2024-05-16 13:00:36 1368 1

原创 Pwn Unlink堆攻击技术原理以及例题

现在有这么三个chunk,其中我们已经构造好了Unlink的Payload。乍一看可能有点一头雾水,那么如果我们把这段看成一个chunk结构体呢?反之,另一个也是这个道理。glibc 2.23中的unlink宏源码是这样的。,这段恰好满足我们的unlink需求。,也就是我们的fake_chunk。,我们直接查看这个fd指向了哪里。,P是fake_chunk,也就是。这题的堆块指针位于bss段内,是。P是fake_chunk,即可获得我们的fd和bk。complete,或者说。指向的都是同一个地方。

2023-12-17 13:13:35 1248

原创 CISCN SilverWolf

我们将 __free_hook 劫持到 setcontext + 53 以获取需要的函数片段。在这一步之后,我们的 free 将执行 setcontext。二:通过将 free 劫持到 setcontext,RDI 保持其本应执行的操作。之后我们释放堆,由于我们修改目前已存在7个Tcache堆块,我们的堆块会被放入Unsorted Bin中。在这之后,我们可以在需要时调用我们的open函数。记得要恢复这部分,因为我们需要使用Tcache来进行后续的攻击。的地方申请堆块,我们就成功劫持到了这个结构体。

2023-12-13 20:08:23 1207

原创 浅入研究 tcache_perthread_struct

tcache_pertherad_struct结构体初探

2023-12-13 18:28:40 1467 2

原创 在Pwn中,为什么时长需要栈对齐?

在 Pwn 的学习中,对于初学者常常会遇到这个问题:找到了溢出点,并且知道如何溢出,但是不知道为什么自己的Payload并没有成功,Pwntools报错EOF:今天趁着有时间,来仔细研究一下为什么会发生这种情况。

2023-12-07 20:00:30 1799

原创 LitCTF 2023 WriteUp(部分)

迄今为止做出来题目最多的比赛,不过嘛新生赛,加油。

2023-05-17 00:16:39 3607 1

原创 [HNCTF 2022 WEEK4]ezheap

手把手教学,覆盖一切途中会遇到的问题。

2023-04-26 20:15:21 1738 3

原创 HDCTF KEEP ON

我们将Payload填充到0x50大小,因为0x50是s的大小。剩下的0x10则是我们的RBP与Leave, Return指令。然后就是我们的/bin/sh地址。rbp与s的距离为0x60,再减去0x08的返回地址,就得到了我们的目标迁移地址。我们首先将binsh的地址送入rdi寄存器中,然后再继续接下来的操作。这样我们就得到了我们的目标地址,可以开始构建我们的Payload了。来将/bin/sh的地址pop进栈中作为system函数的参数。我们只有0x60的大小构建Payload。

2023-04-26 19:57:58 923 1

原创 HDCTF 2023 Pwn WriteUp

本人是菜狗,比赛的时候只做出来1题,2题有思路但是不会,还是太菜了。栈迁移还是不会,但又都是栈迁移的题,真头大。得找时间好好学学。

2023-04-23 13:15:15 1238

原创 [2021 东华杯]bg3

2021 东华杯]bg3本题是C++写的一道经典菜单堆题,拥有增删改查全部功能。本题本地和远程需要两套Libc和两套偏移。远程的Libc版本是,本地的Libc版本是。

2023-04-17 20:30:09 502

原创 [长安杯 2021学生组]baigei

本题是一题经典的堆题,拥有增删改查功能。在线题目可以在NSSCTF中找到。

2023-04-12 12:33:30 805

原创 [BUUCTF] babyheap_0ctf_2017

有点回想起当初第一次拿到flag时的感觉,继续加油。本题考察知识点:**Fastbin Attack** 与 **Unsorted Bin Attack。**通过使用Fastbin Attack与堆溢出漏洞,我们可以绕过Free后指针置零,从而达到在置零指针后获取堆块fd指针。通过Unsorted Bin Attack,我们可以泄露Libc地址。然后我们再使用Fastbin Attack替换__malloc_hook本文写给自己,也写给跟我一样全网寻找详细解答的师傅们。

2023-03-28 10:37:18 1262

原创 SROP学习 smallest & ciscn_s_3

SROP学习,例题 smallest ,ciscn_s_3

2023-03-19 18:49:39 640

原创 Ciscn_2021_lonelywolf

在第一步中我们得到了tcache_struct的起始地址,我们只需要+0x10即可得到tcache_struct的数据段地址,因为tcache_struct本身也是一个堆。这里有一点需要注意,本题的libc是新版的2.27,具有检测Double Free的机制。机制是在tcache堆中的bk上存储了一段数据,称为key,如果检测到了key,即检测到Double Free。可以发现系统从0x55dc90f61000开辟了0x80,成了我们申请的堆块,变成了0x55dc90f61080,并且状态也改变了。

2023-03-18 17:22:48 260

原创 2023年“楚怡杯“湖南省职业院校技能竞赛“网络安全”竞赛 B模块 Windows渗透与Linux提权

目录B-1:Windows操作系统渗透测试1. 通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该操作显示结果中Telnet服务对应的端口号作为FLAG提交2. 通过本地PC中渗透测试平台Kali对服务器场景Windows进行渗透测试,使用kali中hydra对服务器Telnet服务进行暴力破解(用户名为teltest),将hydra使用的必要参数当做FLAG进行提交(例:nmap -s -p 22);(字典路径/usr/share/wordlists/dir

2023-03-15 12:19:29 2875 10

原创 NSSCTF Pwn Page 1 - 2

NSSCTF Pwn 第一页到第二页全部题目解析。刷了大概一个月的NSSCTF,对Pwn的理解更高了,虽然也没高到哪去。

2023-03-14 18:28:16 4028

原创 2022年浙江省中职组网络空间安全省赛 D模块解析

暂时没拿到题目,自己一个一个漏洞慢慢摸索。

2023-03-10 12:15:06 606 1

原创 [NISACTF 2022]UAF

跟hacknote一样的做法,但是有所不同。

2023-03-10 10:01:24 678 2

原创 2022年浙江省中职组网络空间安全省赛 逆向分析及隐写

从靶机服务器的FTP上下载PE01文件,对PE01.exe二进制文件进行静态调试,将main函数的入口地址作为Flag值提交;从靶机服务器的FTP上下载PE01文件,对PE01.exe二进制文件进行静态调试,将main函数的入口地址作为Flag值提交。对PE01.exe二进制文件进行静态调试,尝试破解该二进制文件,将注册成功后的回显信息作为Flag值提交;对PE01.exe二进制文件进行静态调试,尝试破解该二进制文件,将注册成功后的回显信息作为Flag值提交。这一个晚点说,不是第二题的答案。

2023-03-09 18:33:23 684

原创 Hacknote 一道简单的UAF漏洞题

看了大佬们的WP两天,勉强搞懂了原理。如有任何错误请在评论区指出。

2023-03-09 15:59:09 495

原创 NSSCTF 刷题记录

本篇文章主要写几个值得记一笔的题目,其他题目都是类似换皮。

2023-03-07 19:56:23 1442 3

原创 [HGAME 2022 week1]test your gdb

word函数中,s2被加密,然后使用memcmp函数进行 buf 与 s2 的对比。main函数,个人理解是通过 pthread_create 函数创建并调用一个线程,创建的线程同等于 read(0,buf,0x28)。注意:一定不能使用sendline(v2),因为sendline会添加换行符,因此进入程序的下一个函数,而不是readfsqword。我们发送了16个字节的v2,也就是0x10大小的v2,我们还需要接收0x18大小的垃圾数据,之后的0x08才是我们的Canary。,也就是s2的内容。

2023-03-06 14:15:47 613 3

原创 NSSCTF [2021 鹤城杯]littleof

很显然栈溢出漏洞位于read函数中,buf大小为0x50,而read函数的第三参数,也就是输出/写入/输出的最大的字节长度为0x100,就是2个buf大小的数据。开启 Canary : RBP 位于 0x50 + 0x08,Canary位于0x50 - 0x08,Return Address位于0x50 + 0x16。因为Canary是栈中的一个随机值,我们通过printf泄露Canary,然后将其填充至它本来应该在的位置,就能通过检查。

2023-03-02 23:43:10 981 2

原创 记一个 DynELF 的使用例子

DynELF不能直接泄露/bin/sh的地址,因此需要使用read函数手动输入。实际上操作DynELF比较麻烦,也容易报错,可能是我自己的问题。但是相比之下DynELF的优势是快,并且用起来简单。无论如何也是一种做题的方法,记一笔。并且需要联网,不能比赛使用。

2023-02-28 15:52:50 193

原创 BUUCTF Pwn 1-12题解析及答案

这里使用fmtstr_payload直接替换 atoi_got 的原因是got表才是程序运行时函数的真正地址,通过替换atoi,修改为system,再送入'/bin/sh\x00' 即可成功getshell。s 的大小是0x3C,那么我们只需要输入 0x3C,也就是60 / 3 个I即可溢出,之后的内容我们可以就可以构建ROP链。也就是说,我们最多输入32个字节的东西,根据上文,我们可以输入32个I,这样就是32个you,也就是96个字节。0x0F + 0x08 代表 s 的大小加上8字节大小的rbp。

2023-02-28 14:22:07 2981 1

原创 BUUCTF Ret2Csu ciscn_s_3

经过几个月的假期都忘完了,趁着最近有点时间复健一下,顺便弄明白了不少以前还不会的东西。

2023-02-20 20:24:59 624

原创 2021年网络空间安全江西省省赛 D模块答案

修复方法:修改留言板PHP文件,使用PHP中的 htmlspecialchars 转译特殊字符,并由于默认不会转译单引号,加上参数 ENT_QUOTES。发现方法:通过使用 Nmap 扫描目标服务器开放的端口,发现445端口开放着SMB服务。修复方法:修改 upload 方面的php文件 匹配文件头,若文件头是 application/octet-stream 即为PHP文件时拦截。发现方法:通过使用 Nmap 扫描目标服务器所开放的端口,能发现开放了一个 8848 与 40959 端口。

2023-02-13 14:35:22 535

原创 Ret2csu level5 & ciscn_2019_s_3

本题难点:对栈的理解需要稍微更深入一点。

2022-11-06 12:06:40 582

原创 BUUCTF ciscn_2019_es_2

栈迁移。

2022-11-02 12:52:35 429

原创 BUUCTF pwn2_sctf2016

本题难点:绕过字符串大小限制以及是否掌握了ret2libc。

2022-11-01 09:16:50 606

原创 BUUCTF ciscn_2019_ne_5 & jarvisoj_fm

只开起了部分RELRO与NX。IDA中发现4个函数mainGetFlagAddLog主要只需要看这3个函数。

2022-11-01 01:28:11 800

原创 BUUCTF ciscn_2019_n_5

通过 puts 函数泄露真实地址,通过LibcSearcher查询Libc中后3位相同的Libc,dump并计算出 system 、 /bin/sh 的偏移。但是有个问题,如果本地打不进去可以尝试更换系统打,我的Kali打不进去换了个Ubuntu进去了。既然没开NX,那代表栈是可执行的,只需要构造shellcode即可直接获取shell。Payload_Name --- 用来跳过第一步的输入 name。Payload_Leak --- 用来进行溢出并获取地址。完全是裸的程序,基本上一点保护都没开。

2022-10-31 17:52:55 1839 7

原创 BUUCTF not_the_same_3dsctf_2016

本题目本地与远程得用两种方案打。

2022-10-31 13:19:39 293

原创 BUUCTF ciscn_2019_n_8

一道通过Checksec让没看源代码的你觉得难度很高的题。

2022-10-31 12:15:58 340

原创 BUUCTF [第五空间2019 决赛]PWN5

输入探测格式化字符串的payload,AAAA-%x-%x-%x-%x-%x,A的ASCII码值为65(0x41),因此是图中选中的段。通过 fmtstr_payload 将 dword_804C044 的内容替换为0x1,而非随机数。因为我们已经知道偏移量了,可以使用pwntools的 fmtstr_payload 函数。但是这次是将 dword_804C044 修改为任意值,然后再次输入此值即可获取shell。或者还有一个,AAAA-%p-%p-%p-%p-%p-%p,32位64位通用。

2022-10-31 11:11:05 1885

原创 BUUCTF [OGeek2019]babyrop

不知道为什么远程进不去,后来选择了不用LibcSearcher,用题目提供的Libc进去了。分析完反汇编成C语言的程序源码后,就是常规的ret2libc了。由于本题是32位ELF,因此不需要rdi与ret栈对齐。思路有了,接下来是构造PoC与Payload。strlen 遇到 \x00会截断。使用puts函数进行泄露真实地址。成功本地获取shell。首先绕过 strlen。

2022-10-30 22:32:42 957

原创 BUUCTF ciscn_2019_c_1

RELRO 是一种用于加强对 Binary 数据段的保护的技术。由 CPU 提供支持,在页表中有Non-executable flag, 来限制一块内存区域不可执行。IDA Pro中查看的大小有时候可能是错误的,大部分时间以gdb动态调试为准。把加密后的文本复制到新建文本文档中,查询RBP的前4个字符。远程调试使用 libc 0 ,本地调试使用 libc 1。64位ELF,开启了部分RELRO以及NX。32位和64位程序在函数调用的方式存在区别。不止这种方法可以获取大小,还有两种方法。84 - 4 即可。

2022-10-30 17:46:59 912

原创 BUUCTF get_started_3dsctf_2016

最后必须要返回exit,因为本题没有开启标准输入输出,输入输出会在缓冲区呆着,而exit执行后会将缓冲区输出,则可回显flag。需要 -0x04,因为是32位程序,并且返回地址要改成 get_flag 的地址。溢出 + get_flag地址 + exit + 2个判断条件。溢出 + get_flag地址 + 2个判断条件。但是这个思路还缺少一步。key,key1的地址。

2022-10-29 15:33:00 528

原创 XSCTF联合招新赛(热身赛)babystack & easyrop

开启了栈不可执行,但是在 IDA Pro 中发现了backdoor函数。

2022-10-29 14:46:13 2121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除