自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 BUUCTF Pwn cmcc_simplerop WP

因为是静态链接 无法用ret2libc 同时函数里没找到system函数 考虑用ret2syscall。IDA32打开 找到main函数 看到一堆函数 判断为静态链接。0x58 - 0x3c + 4 = 32 真实偏移应是32。32位 开了NX 无PIE和canary。

2025-03-28 14:50:28 199

原创 BUUCTF Pwn lctf2016_pwn200 WP

最后释放使其进入fastbin 再malloc并编辑 让shellcode的地址覆盖返回地址 最后退出程序的时候就会返回shellcode的地址。再往上就是第二次输入的位置(0x7ffee75a2730)(距离该rbp的位置0xC0)标记的位置是泄露出来的rbp(栈地址) 往上的0x616161...是用于填充的a。能利用printf泄露栈地址 而且能利用栈溢出覆盖堆指针 也能创建和删除堆。该函数会先创建一个0x40的堆 然后读取0x40的数据 并复制到dest。堆的增删功能 同时新建堆能控制大小。

2025-03-27 18:18:03 296

原创 BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

可以在编辑堆的时候重新设置大小 存在堆溢出。delete函数的指针清零了 无UAF。开启了全保护 64位。

2025-03-18 22:03:50 185

原创 NSSCTF Pwn [GHCTF 2025]真会布置栈吗?WP

思路是先泄露栈地址的位置 再利用各寄存器的读取写入binsh地址 0 0 最后利用rax和r13的交换执行execve(rax=59)syscall。先print三次 再read一次 其中第二次的print会打印RSP所在地址(栈地址泄露) read会将读取的内容存储在RSP。但是0x401017的gadgets里没有rdx的存储 需要用到0x401021的rdx清零。最后再jmp到 [RSP+8-8](也就是RSP)的位置执行。text段有存入各寄存器的指令。64位 IDA64打开。

2025-03-14 12:11:50 336

原创 BUUCTF Pwn [ZJCTF 2019]EasyHeap unlink+freehook做法

后续修改0x6020E0的位置为freehook 再修改一次 让其指向system 最后free掉chunk2 就能执行binsh了。delete_heap函数已经将指针清零 无UAF。edit_heap允许自己输入读取字节 存在堆溢出。同时 存储的指针位于bss段。

2025-03-13 22:29:08 211

原创 BUUCTF Pwn inndy_rop WP

左边一堆函数 似乎是静态链接 右边有个gets的栈溢出漏洞。IDA32 查看函数。

2025-03-11 13:35:53 183

原创 BUUCTF Pwn bjdctf_2020_router WP

注意到33行会执行system 15行已经有了ping 会将输入的内容变为ping xxx。这样就能得到flag。

2025-03-11 13:21:02 159

原创 BUUCTF Pwn mrctf2020_shellcode WP

按理说构不成溢出 但是下面的汇编:跳跃到11D6 将buf的内容存到rax 并进行call。进行一次puts操作 再进行一次读取0x400字节的read 存到buf。先创建了buf(大小0x410) var4(大小0x4) 两个变量。没开NX 开了PIE。

2025-03-11 13:09:32 150

原创 NSSCTF Pwn [BJDCTF 2020]YDSneedGirlfriend WP

add函数 会先创建一个0x10堆用于存储print堆内容的指针 再创建设定大小的堆。打印函数执行了0x10的堆的函数指针 可以利用delete的悬垂指针修改这段区域。先申请两个大于0x10的堆来让两个存放打印函数的堆能在free之后相邻。delete函数味清空指针 存在UAF/double free。此时执行show(0) 将会执行后门函数 得到shell。下载 checksec exeinfo。64位 打开IDA64查看。一个菜单题 查看各函数。

2025-03-10 16:24:28 169

原创 NSSCTF Pwn [SUCTF 2018 招新赛]unlink WP

接下来利用该区域泄露libc从而得到free_hook地址 来getshell。编辑函数存在堆溢出 同时buf是全局变量 位于bss段。那么就能利用unlink来让指针指向buf所在地址区域。64位 IDA64查看函数。堆题 增删查改都齐全。

2025-03-08 13:52:06 166

原创 BUUCTF Pwn ez_pz_hackover_2016 WP

可以看到 输入字符‘c’的位置应该在0x22 ebp在0x38 0x38-0x22=0x16 再加4字节到返回地址。首先会泄露变量s的地址(栈地址) 然后会对输入进行判断 存在crashme就将输入复制到dest变量。泄露的栈地址和shellcode的地址有0x20的偏移 再加个4位的地址。存在栈溢出 对于strcmp的比较 可以用 \x00 截断。下载 checksec exeinfo。但是dest的偏移不是IDA所写的。32位 IDA32打开 查看函数。

2025-03-03 16:52:19 179

原创 NSSCTF Pwn [NISACTF 2022]UAF WP

同时edit 不能编辑第0个堆 但del函数能删除第0个 所以需要先create第0个堆再删除再创建 这样就会让第一个堆的指针指向第0个 从而能编辑第0个堆的内容了。show函数中 如果页面是0就执行一个函数指针 create函数创建一个8字节的堆 这个函数指针的函数名在堆的后四个字节 函数参数是前四个字节。看到有后门函数 于是编辑的内容:前四个字节 'sh\x00\x00' 后四个字节为NICO函数地址。下载 exeinfo checksec。32位 IDA32 查看main。一个堆的增删查改功能。

2025-03-03 14:55:33 228

原创 NSSCTF Pwn [LitCTF 2023]狠狠的溢出涅~ WP

看到有strlen的长度检查 所以通过在payload开头加 \x00 跳过。现在 exeinfo checksec。64位 IDA64打开。

2025-03-01 09:42:29 121

原创 NSSCTF Pwn [NISACTF 2022]ReorPwn? WP

查看代码 对输入的字符串进行了反转操作 然后传给system。

2025-02-25 20:44:03 231

原创 NSSCTF Pwn [CISCN 2023 初赛]烧烤摊儿 WP

同时该程序没有system函数 为静态链接 所以使用ret2syscall。经过测试可以知道 啤酒和烤串存在整数溢出 填负数就可以加钱。同时显示的名字是全局变量name 可以写入binsh。下载 checksec exeinfo。

2025-02-25 10:27:22 147

原创 BUUCTF Pwn metasequoia_2020_samsara WP

那么就可以把v7设置为chunk头 v9为该chunk的size。可以看到41行的free操作后没有把指针置为NULL。62行如果v8等于某个数值 那么就能得到flag。1.下载 checksec exeinfo。同时上面的v7是能打印出来的地址。可以进行double free。v7又正好在v8上8个字节。

2025-02-24 10:34:07 189

原创 Pwn actf_2019_message:fastbin double free 做法

那么接下来就是泄露got地址 得到libc基址 得到freehook地址 再让freehook指向system(先将chunk6改为freehook地址 再利用chunk0 改为system)如果需要绕过fastbin对两次free的检查 就需要提前再设置一个0x30大小的堆 来让接下来的创建堆能顺利创建到假chunk的位置。如果double free之后 再申请一个大小相同的堆 ptr所在的位置往前移8字节(0x602058) 假设以此处为假chunk头。再通过给出的函数就能修改假chunk的内容。

2025-02-22 20:10:43 344

原创 NSSCTF Pwn [NISACTF 2022]ezheap WP

直接在gets的时候用0x20的数据填充至command堆的内容区域就行了。程序创建了两个堆 并且执行了command堆里的指令。下载 得到文件 exeinfo checksec。可以看到 堆的大小是0x20 而且两个堆相邻。存在gets函数 可以实现堆溢出。32位 用IDA32打开。

2025-02-20 16:00:07 187

原创 NSSCTF Pwn [HUBUCTF 2022 新生赛]fmt WP

可以得到flag的16进制形式(似乎不能用%s 因为它将栈上的值当地址而这里栈上直接是flag字符串)也就是利用%12$p 一直往下到0x7D(‘}’的ASCII码)可以看到相差了 (0xD0-0xB0) / 8 = 4个偏移。很明显的格式化字符串漏洞 而且将flag压入栈中了。下载 打开文件 checksec exeinfo。再利用gdb调试查找flag和字符串的相对位置。64位 查看main函数。

2025-02-18 09:55:35 146

原创 NSSCTF Pwn [HNCTF 2022 Week1]fmtstrre WP

可以看到flag和输入字符的位置 0x9E0-0x8E0=0x100 64位程序 除以8字节就是 32的偏移。由代码可以得到flag已经被压入栈中 只要找到输入字符和flag的偏移量就可以利用printf输出flag。下载文件 exeinfo checksec。加上输入字符的偏移就是32+6=38。64位 用IDA64打开。

2025-02-17 14:12:28 198

原创 NSSCTF Pwn [LitCTF 2023]口算题卡 WP

似乎是一个算式 100次之后就会出flag。需要写个exp循环截取算式并且计算。无文件,直接nc看看。

2025-02-17 11:40:56 211

原创 NSSCTF Pwn [HUBUCTF 2022 新生赛]singout WP

其他WP还有用tail命令 tac命令 但都用了方法规避flag或cat直接输入。可以看到cat和flag都不能输入。很新奇的一道题,故记下。

2025-02-16 16:13:06 146

原创 NSSCTF Pwn [BJDCTF 2020]babyrop2 题解

可以看到canary距离输入的字符串8字节 离rbp也是8个字节。得到了canary之后,就是ret2libc的流程了。下载 checksec exeinfo。可以看到有格式化字符串漏洞和栈溢出漏洞。64位 开启了canary和NX保护。利用格式化字符串漏洞泄露canary。canary的偏移为7;IDA64 查看函数。

2025-02-11 09:08:12 158

原创 BUUCTF Pwn linkctf_2018.7_babypie 题解

查看栈情况后,可以看到Canary和输入的字符差了 0xB8-0x90=0x28 和RBP差了8字节。Canary保护已经解决,接下来就是绕过PIE保护。开启了NX Canary和PIE 64位。下载 exeinfo checksec。目的是栈溢出到后门函数执行binsh。方式 爆破得到后门函数的确切地址。IDA上的后门函数只知道后三位。

2025-02-10 06:17:38 250

原创 NSSCTF Pwn [HNCTF 2022 Week1]ret2shellcode 题解

buff在bss段上 会将读到的内容复制到buff上。下载 exeinfo checksec。所以把shellcode写到buff上。

2025-02-05 11:53:17 188

原创 NSSCTF Pwn [SWPUCTF 2022 新生赛]shellcode?题解

所以将shellcode直接写到上面就能执行。下载 exeinfo checksec。在固定地址 0x30303000。开启了NX PIE 64位。

2025-02-04 15:54:05 164

原创 NSSCTF Pwn [GFCTF 2021]where_is_shell 题解

新知识:16进制 24 30 代表$0 也可以作为binsh使用。下载文件 exeinfo checksec。所以binsh的地址为0x400541。64位 用IDA64打开。还有一个tips函数。

2025-02-04 15:38:25 261

原创 NSSCTF Pwn [NISACTF 2022]ezpie 题解

因为开启了PIE 所以IDA中 后门函数减去main函数的后三位就是偏移 给出的函数加上这个数就是后门函数地址。下载 exeinfo checksec。发现已经给出了main函数地址。32位 NX PIE开启。

2025-02-04 15:25:15 219

原创 BUUCTF Pwn axb_2019_brop64 题解

找到了6个pop的地址 这个地址+9即为pop_rdi_ret 的地址。puts GOT地址为 0x601018。找到gadget是0x4007d6。生成的文件用IDA打开 二进制格式。这题是BROP 所以不下文件。找到是0x40095a。

2025-02-03 16:40:50 322

原创 BUUCTF [Black Watch 入群题]PWN1 题解

read两次 第一次read的变量s在bss段;第二次的buf到ebp距离为 24 但是第二次的read字节只能刚好填满返回地址 传不进去变量。同时 这题开了NX 无直接的binsh和system 用libc做题。然后构造payload2让程序执行leave ret。1.下载文件 exeinfo checksec。所以想到栈迁移 将栈移动到变量s所在位置上来。先将libc的套路传入到变量s中。接下来就是常规的libc。

2025-02-01 15:52:38 212

原创 BUUCTF Pwn rootersctf_2019_srop WP

这段代码将再让rax=15执行sigreturn 获得binsh 前面的8个a是填充到返回地址的数据。(如果前面rbp设置为buf+0x20 相当于设置了一个0x20的数组 这里的填充就要写成0x28)将rax设置为15执行sigreturn 然后将frame压入栈中 执行第二个read。先进行一次write 再进行一次read操作 有栈溢出漏洞。1.下载 得到文件 checksec exeinfo。因为也执行了leave ret。64位 使用IDA64打开。很短的程序 用汇编形式查看。

2025-01-19 12:08:54 232

原创 BUUCTF Pwn 360chunqiu2017_smallest 题解

接着就是要构造sigreturen 将SP移动到泄露地址上 方便得到binsh地址偏移。需要构造两段frame 第一段用于将返回地址跳到stack 第二段用于执行execve。进行了read操作 read的返回值是读取字符数 可以利用这一点进行SROP。本地能打通 线上找好久都没找到打通的方法。64位 拖入IDA64。

2025-01-10 10:36:25 185

原创 BUUCTF Pwn ciscn_2019_s_3 WP

接着进行传参,rbx rbp设置为0 然后将r12设置为execv的地址(binsh地址+0x08 * 0x0A) ,再将后面几个寄存器设为0。第二个gadgets有个call 第一次执行会跳转到r12 且前面已经将rbx设置为0,所以。先传入binsh字符串及堆字符到rbp 然后调用csu里的pop一堆寄存器的gadgets。将rax设为15 和 59 这两个分别是signreturn 和 execve的系统调用。所以有两种做法:ret2csu 和 SROP。然后传参binsh 以ret到系统调用结束。

2025-01-06 15:44:42 294

原创 BUUCTF Pwn ciscn_2019_es_2 WP

使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造。的距离 所以EBP距离输入这个字符串的地址为0x28+0x10=0x38。接下来构造payload2 目的是使得EIP指向system函数。看到EBP距离输入的位置有 0x78-0x50=用IDA32打开 定位main函数。1.下载 checksec。

2024-12-29 15:22:41 542

原创 BUUCTF Pwn picoctf_2018_rop chain WP

所以需要构造ROP将这两处的函数条件满足使win1和win2=1,再返回到vuln函数 获取flag。发现需要win1和win2都=1,而且a1等于特定值 交叉引用查看win1和win2的位置。看到vuln函数有栈溢出漏洞 同时发现旁边有flag的后门函数。32位 拖到IDA32 找到main函数。1.下载 checksec。

2024-12-22 16:26:44 218

原创 BUUCTF Pwn [HarekazeCTF2019]baby_rop2 题解

因为这是64位程序 所以用寄存器传参;又因为printf得传至少2个参数 所以要用到寄存器RDI RSI。查到的rsi多了个r15寄存器 但不需要用到 所以写payload的时候记得填充它。这里的打印函数是printf 所以利用printf函数的plt输出真实地址got。查看main函数 看到给了个libc说明这题是ret2libc题。但printf的got好像不行 所以换成了read的got。第一个rdi传入printf里的格式化字符串。下载 得到两个文件 checksec。64位 拖入IDA64。

2024-12-16 22:48:44 319

原创 BUUCTF Pwn bjdctf_2020_babystack2 题解

发现read需要读取输入——nbytes的数字来决定长度。同时nbytes是size_t类型 也就是无符号整型的。定位到main函数 以及后门函数。1.下载 checksec。所以想到整数溢出漏洞。64位 拖入IDA64。

2024-12-12 20:06:33 303

原创 BUUCTF Pwn ciscn_2019_ne_5 题解

按1可以存入字符串到src 按4到Getflag函数 将src复制到dest里 但是未对长度作出限制 所以是关于strcpy的栈溢出漏洞。找到system函数及binsh(32位 用IDA32打开。下载 checksec。

2024-12-12 19:31:46 243

原创 BUUCTF Pwn ot_the_same_3dsctf_2016 题解

又因为printf打印出来的条件要有个exit 所以还需要它的地址。但是flag只是存储到了变量上 需要打印出来。所以需要获取printf函数的地址。栈上看到了自己的payload。发现函数里面还有个后门函数。将flag存储在f14g上。32位 开启了NX保护。拖入IDA32看代码。

2024-12-11 10:06:56 234

原创 BUUCTF Pwn [OGeek2019]babyrop 题解

返回上一个函数字符串的第七个数 并比较是否=127 但是想要实现栈溢出 字符ASCII码必须要>231才行。运行 得到flag:flag{13b507a6-fb96-4d2d-ab7d-c8c3853dc8c4}所以要利用在字符串前加上 \x00 绕过长度检测 使14行的if不会执行。查看字符串 这题也没有后门函数 所以接下来就是ret2libc。读取字符串 如果最后一个数字和随机的数字不相等 就直接退出。所以要用到拓展ASCII码 取 \xff。32位 用IDA32打开。下载 checksec。

2024-12-07 21:18:45 403 1

空空如也

空空如也

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

TA关注的人

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