随笔分类 -  CTF题目

摘要:这也是一道retlibc的题目,首先我们需要泄露canary的值。绕过保护。 这里我们覆盖canary的最后一个字节,打印出canary的值。 1 from pwn import* 2 #sh = remote("182.116.62.85", 27056) 3 sh = process('./li 阅读全文
posted @ 2022-01-07 16:43 Mua_Uncle_W 阅读(159) 评论(0) 推荐(0)
摘要:这一道retlibc的题目很常规。不在过多介绍,简单记录一下。 from pwn import * context.arch = 'amd64' context.log_level = 'debug' context.terminal = ['tmux','sp','-h'] elf = ELF(' 阅读全文
posted @ 2022-01-07 16:40 Mua_Uncle_W 阅读(90) 评论(0) 推荐(0)
摘要:这道题目是格式化字符串漏洞的一道题目,还涉及到了重定向。记录一下,这是可是详细讲解,不会的同学可以看一下。 我们来看一下题目内容 主函数没有什么说的,直接来看vuln函数。 题目大眼一看有两处格式化字符串漏洞。遇到这个一般是先找偏移。通常来说是先输入一串%p,通过输出的内容来数偏移。但是这里一开始只 阅读全文
posted @ 2021-11-22 10:24 Mua_Uncle_W 阅读(283) 评论(0) 推荐(1)
摘要:这道题真简单,xue微说一下。 覆盖v2的值让v2+v3+v4=666 gdb调试一下 from pwn import *​ p = remote("pwn.challenge.ctf.show", 28159)​ p.send("a" * 0x24 + p32(664))​ p.interacti 阅读全文
posted @ 2021-11-14 11:38 Mua_Uncle_W 阅读(168) 评论(0) 推荐(0)
摘要:这道题目看很多题解是使用 one_gadget 做的,还有的是使用 LibcSearcher 模块做的。我刚开始看见题目给了 libc库,但是我总是打不通。 这道题如果使用 LibcSearcher 来做就是常规的先泄露canary值后按照ret2libc来打就可以了。 来先看一下,程序的主要部分。 阅读全文
posted @ 2021-11-10 17:27 Mua_Uncle_W 阅读(353) 评论(0) 推荐(0)
摘要:比赛题目记录一下,这是唯一一道栈的题目。其他都是堆的题目,堆还没怎么开始学习。 这是一道需要修改 __stack_chk_fail@got 地址来绕过canary 的题目。程序中没有 printf 函数我们没有办法泄露canary 的值。来看题目: 开启了Canary 和 NX。没有开启 RELRO 阅读全文
posted @ 2021-11-08 19:06 Mua_Uncle_W 阅读(267) 评论(0) 推荐(0)
摘要:这是一道数组越界的题目,记录一下。 常规操作。 int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax unsigned int v5; // [esp+18h] [ebp-90h] unsi 阅读全文
posted @ 2021-11-07 20:01 Mua_Uncle_W 阅读(179) 评论(0) 推荐(0)
摘要:攻防世界得题目代码很长啊,这就造成一定地迷惑性,提高了代码阅读地困难。 __int64 __fastcall main(__int64 a1, char **a2, char **a3) { char buf[55]; // [rsp+0h] [rbp-50h] char v5; // [rsp+3 阅读全文
posted @ 2021-11-03 20:25 Mua_Uncle_W 阅读(340) 评论(0) 推荐(0)
摘要:这是一道‘强网’拟态防御线上比赛的一道题目。当时没有做出来,现在来记录一下。 首先这是一道 canary 加libc的题目。 保护全开,对于青铜段位的我来说可是下了一跳。 int __cdecl main(int argc, const char **argv, const char **envp) 阅读全文
posted @ 2021-10-31 19:44 Mua_Uncle_W 阅读(329) 评论(0) 推荐(0)
摘要:这两个题考查的战迁移。栈迁移就是在可以发生栈溢出的情况下但是溢出长度不够,不能装下我们构造的rop链。我们需要把栈顶指针和栈底指针迁移到其他可写的地方。 栈迁移需要借助两个汇编指令: * leave mov esp,ebp pop ebp *ret pop eip 这个图是引用看雪论坛上( yich 阅读全文
posted @ 2021-10-28 17:25 Mua_Uncle_W 阅读(165) 评论(0) 推荐(0)
摘要:这道题听名字simplerop我直接先用ret2libc做了,发现不行,还是我太年轻了。 这道题用到了系统调用和rop技术。构造rop链。来我们看题。 checksec 只开了NX。 只有一个栈溢出漏洞,在左边函数栏中搜索system函数没有,也没有printf_plt显然不是ret2libc fi 阅读全文
posted @ 2021-09-27 18:15 Mua_Uncle_W 阅读(345) 评论(0) 推荐(0)
摘要:这是一道入门的CTF题目,我们要从这道题中学习如何来编写shellcode。下面我们来分析一下题目: 这是IDA中的位代码。 看见 RWX程序中开启了可读可写可执行。显然是写shellcode然后让程序执行。先然这道题的考点并不是在这。 我们看到了一个函数seccomp。我们来学习了解一下: 我们来 阅读全文
posted @ 2021-09-26 17:42 Mua_Uncle_W 阅读(116) 评论(0) 推荐(0)
摘要:这是一道给出libc库的64位简单ret2libc的题目。以前都是没有给出libc库的题目。用LibcSearcher这个工具来做。用已知的libc来做还不是很熟练。下面我们看一下题目,就当将一个例题了。 先检查了一下保护机制,只开了一个NX常规题目。 题目给了一个libc库。我们的思路是,同泄露某 阅读全文
posted @ 2021-09-19 09:44 Mua_Uncle_W 阅读(148) 评论(0) 推荐(0)
摘要:这道题我看题解看了很长时间。我觉得题解还是不能着急写,先在这里记录一下,我再熟练一点再来写题解。别误导他人 阅读全文
posted @ 2021-09-14 22:28 Mua_Uncle_W 阅读(77) 评论(0) 推荐(0)
摘要:这道题绕了一个小弯,细心的同学会很快找到问题的所在。这道题的原理是一道简单的栈溢出的问题。如果你不仔细看一下汇编代码的话就会被迷惑。 接下来我们拖进IDA看一下程序的主要流程。 很简洁的程序,可以看到read函数存在栈溢出。 再来看看有什么后门函数可以利用吗? 可以看到这个函数的意思就是读取本地的f 阅读全文
posted @ 2021-09-14 22:25 Mua_Uncle_W 阅读(138) 评论(0) 推荐(0)
摘要:这个题我就不写了直接上链接,这位师傅写的很详细。 https://blog.csdn.net/mcmuyanga/article/details/108918335 阅读全文
posted @ 2021-09-06 21:50 Mua_Uncle_W 阅读(75) 评论(0) 推荐(0)
摘要:这到题在ret2libc基础上加了一些难度。对于新手来说还是不错的。话不多说看题: 先来checksec一下啊,依旧是开启NX。 放进IDA中分析一下程序的代码: 这是主函数可以看到一个vuln()这个函数,我们点进去看一下。 这是vuln函数的内部,这个get_n()函数也是自定一的函数。vuln 阅读全文
posted @ 2021-08-27 16:43 Mua_Uncle_W 阅读(494) 评论(0) 推荐(0)
摘要:这是一道64位的ret2libc和“铁人三项(第五赛区)_2018_rop来自BUUCTF”是一个类型的题目不过payload的构造有一点差别。因为在64位程序中函数的前六个参数保存在寄存器中第七个参数保存在栈中。而在32位程序中函数的参数保存在栈中。 这两个题正好一样的题型但是略有差别。 这是主函 阅读全文
posted @ 2021-08-26 15:54 Mua_Uncle_W 阅读(353) 评论(0) 推荐(0)