自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SuperGate的博客

烫烫烫烫烫烫

原创 CTF-PWN-babydriver (linux kernel pwn+UAF)

第一次接触linux kernal pwn,和传统的pwn题区别较大,需要比较多的前置知识,以及这种题的环境搭建、运行和调试相关的知识。文章目录Linux内核及内核模块Linux内核(Kernal)内核模块(LKM)iocltstruct credSLUB&SLAB内核态函数题目分析程序概述漏洞分析exp内核调试相关Linux内核及内核模块Linux内核(Kernal)这里只对内...

2020-02-26 18:39:09 405 1

原创 CTF-PWN-house-of-orange (unsortedbin attack+IO_FILE文件结构利用)

程序综述[*] '/home/supergate/Desktop/Pwn/houseoforange' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled FORTIFY: ...

2020-02-22 19:41:24 153

原创 CTF-PWN-play (条件竞争,多进程共享同一数据文件)

程序概述[*] '/home/supergate/Desktop/Pwn/pwn' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)只打开了NX保护,这为...

2020-02-16 15:32:28 186

原创 CTF-PWN-magic (FILE结构体攻击)

程序综述checksec 查看程序保护supergate@ubuntu:~/Desktop/Pwn$ checksec pwn[*] '/home/supergate/Desktop/Pwn/pwn' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: ...

2020-01-29 19:16:44 278

原创 CTF-PWN-HouseOfGrey(栈溢出+maps泄露地址+mem泄露内存)

程序概述[*] '/home/supergate/Desktop/Pwn/pwn' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled查看程序保护后发现保护全开supergate...

2020-01-27 23:38:01 172

原创 CTF-Pwn echo_back(文件IO指针利用+格式化字符串漏洞)

程序综述supergate@ubuntu:~/Desktop/Pwn$ checksec echo_back[*] '/home/supergate/Desktop/Pwn/echo_back' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX e...

2019-12-19 16:57:46 258

原创 CTF-PWN-heap (off-by-one+unlink+malloc_hook利用)

程序综述[*] '/home/supergate/Desktop/Pwn/pwn1' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled保护全开。IDA查看后发现是一个菜单题,主...

2019-12-02 19:41:12 158

原创 CTF-PWN Noleak (unsortedbin attack+fastbin attack+malloc_hook)

漏洞简述[*] '/home/supergate/Desktop/Pwn/timu' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX disabled PIE: No PIE (0x400000) RWX: Ha...

2019-11-25 21:19:44 369

原创 CTF-PWN-note-service2 (堆中shellcode执行)

checksec Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX disabled PIE: PIE enabled RWX: Has RWX segments发现没有开启NX,因此很有可能是要我们将sh...

2019-11-18 19:55:32 145

原创 CTF-PWN100levels(vsyscall利用)

程序流程&漏洞分析checksec:supergate@ubuntu:~/Desktop/Pwn$ checksec pwn[*] '/home/supergate/Desktop/Pwn/pwn' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found N...

2019-10-30 22:06:29 180

原创 CTF-PWN-4-ReeHY-main-100(堆溢出+double free+unlink)

程序综述题目包含了一个动态库.so文件和elf文件,checksec查看:supergate@ubuntu:~/Desktop/Pwn$ checksec pwn[*] '/home/supergate/Desktop/Pwn/pwn' Arch: amd64-64-little RELRO: Partial RELRO Stack: No can...

2019-10-09 09:52:33 139

原创 CTF-PWN-pwn100 (ROP+DynELF定位system函数)

漏洞分析程序中只开了NX,查看程序逻辑发现:int sub_40068E(){ char buf; // [rsp+0h] [rbp-40h] sub_40063D((__int64)&buf, 200); return puts("bye~");}使用sub_40063D函数向buf中读取200个字符,显然存在栈溢出。接下来我们要思考如何利用这个漏洞。观察到程...

2019-09-24 13:14:20 232

原创 CTF-RE-cello_rule (lib库函数的分析)

题目概述题目给出了一个linux下的可执行程序和一个加密过的flag.png。可以知道程序是对这个文件进行加密,然后输出加密后的文件。因此我们的思路就是逆向程序的加密方式和逻辑,从而逆推出flag.enc的源文件。具体分析由于我们不清楚程序真正逻辑的入口点,因此第一步是ida查看程序的可以字符串。这些字符串显然是值得我们去研究的,在google上面可以查到这些字符串的信息。发现这些字符串...

2019-09-10 20:16:25 140

原创 CTF-RE-tar_tar_binks

题目给出了两个文件,一个是已经损坏的.tar文件,一个是.dylib的动态链接库首先尝试解压.tar压缩包supergate@ubuntu:~/Desktop/task1$ tar -xf flag.tartar: This does not look like a tar archivetar: Skipping to next headertar: Exiting with fail...

2019-08-27 12:12:12 170 1

原创 CTF-PWN-pivot32 (ROP+plt+GOT+栈帧转移)

程序概述首先本程序是一个32位程序,checksec后观察发现只开启了NX。由于题目中使用了libpivot.so动态链接库,并且重要的得到flag的函数也在libpivot.so函数中,因此考虑用plt和got的映射关系,然后根据函数在.so文件中的偏移来找到cat_flag函数的地址,从而栈溢出控制程序流程。有一个小问题在于题目中给的栈溢出的缓冲区比较小,很显然无法存下我们所需要的所有R...

2019-08-20 21:06:23 223

原创 CTF-PWN-callme32 [ROP+栈溢出]

首先发现在pwnme函数中有一个明显的缓冲区溢出,长度为40,经调试发现填入44长度的垃圾信息即可填入shellcodeida发现一个重要函数如下:点入后发现这三个函数为系统级调用。正好题目给了我们一个.so文件。进入查看,发现有这三个函数的反编译。依次是将加密后的flag通过key1,key2解密。调用顺序应该是callme_one -> callme_two -> c...

2019-08-13 15:07:50 195

原创 2019 UESTC ACM Training for Graph[L] (最小割+最大权闭合子图)

题意:有一些物品,一些集合,买每个物品需要一定 的费用,每个集合包含一些物品,如果集合内物品都被 买了,就会得到一定价值,求能得到的最大价值。首先本题的模型是最大权闭合子图,而且是裸的……问题一般情况:选择某个东西可以得到一定收益,但选了它就必须选择它的一些后继,而不同物品可能有一些相同后继,求能选到的最大收益。这种类型的题大多都可以用这个模型做。先对所有的电视频道的点向t连边,容量为...

2019-07-21 20:24:57 66 1

原创 CTF-RE baleful (pin打桩+虚拟机+upx脱壳)

本文部分借鉴文章:https://firmianay.gitbooks.io/ctf-all-in-one/src/writeup/6.2.5_re_picoctf2014_baleful#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99首先查看文件信息supergate@ubuntu:~/Desktop/task1$ file balefulbaleful: ...

2019-07-21 20:16:15 451 2

原创 CTF-RE dont_panic (pin二进制打桩暴力)

部分参考题解:http://eternal.red/2017/dont_panic-writeup/方便起见,题目文件名改成go运行题目程序,发现flag是跟在命令行参数之后的。用IDA打开后发现没有找到main函数,因此选择在Linux下查看段信息:supergate@ubuntu:~/Desktop/task1$ readelf -S go得到信息如下:Section ...

2019-07-13 20:47:42 117

原创 2019 UESTC ACM Training for Graph[O] (最优比例生成树)

题意:空间中内有n个点,连n-1条边,使得这些边 的高度差之和比上水平距离之和最小。 最优比例生成树问题对于一个最小生成树,可以表达为如下形式:x1 * a1+x2 * a2+…+xm * am其中x1 ~ xm要么为1要么为0,并且xi的和为n-1。ai是编号为i的边的权值,并且选择的点要使得图联通。那么对于题中的问题,取一个生成树满足sum{xi * hi}/sum{xi * di...

2019-06-13 13:38:01 219

原创 2019 UESTC ACM Training for Graph[J] (二分图匹配+Hopcroft-Carp)

题意:给定一个二分图,选择尽量少的节 点使每条边都至少有一个点被选择,求选 择节点数 题目中就很明确的把点分成了左右两边,几乎就是暗示我们是一个二分图匹配。下面是对二分图匹配正确性简单的说明:假设对于当前的图已经找到了其最大二分图匹配,那么对于剩下的边集合有这几种情况:1.两个端点都在最大匹配的点集之外,那么这种情况其实也会使得最大匹配数+1,即之前求出来的并不是最大匹配,与题设矛盾。2...

2019-06-13 13:34:51 115

原创 2019 UESTC ACM Training for Graph[I] (第K短路)

第K短路模板题。思路具体如下:首先在我们求s到t的最短路的时候,如果使用bfs求的话,那么第k次到达的路径长度就是我们要求的第k短路,因此用bfs跑k次不同的到达终点的路径即可。问题是搜索k次的状态数可能会非常大……所以可以用A* 算法弄一个估价函数出来,如果判断出是比第k短路还长的路径就剪掉估价函数模型为f=x+e,其中x是当前已经走了的路径长度,e是x到终点的最短路径长度。显然存反向边跑...

2019-06-13 13:33:10 151

原创 2019 UESTC ACM Training for Graph[C] (字典序最小的欧拉回路/道路)

题意大概为找到一个字典序最小的欧拉道路/回路,不过数据范围给的异常的大,所以应该是要对做法有一些要求。对于一条欧拉道路,需要有向图中存在且仅存在一对点,使得一个点的入读比出度大一(这个点即为最终到达的点),另一个点出度比入读大一(这个点即为初始点)。对于一条欧拉回路,需要有向图中所有点的入读=出度。当然,进行以上两个判定之前,还需要保证给出的图所有的边都联通(这一点可以用并查集解决)。因此...

2019-06-13 13:31:31 119

原创 2019 UESTC ACM Training for Graph[B] (最小生成树与最大边权的问题)

题意: 一开始可以选择一条边免费的最小生成树,并求能 达到这个最小生成树的一开始选择边的方案数 首先我们可以想到答案是最小生成树去掉其中最大边权的值。但是讨论方案数的时候,我们会发现我们并不是只让最小生成树上的所有最大边权免费,而是只要能找到一条边,而这条边可以代替树的最大边权,然后让这条边免费就行了。如果有这么一条边存在,那么在最小生成树上加入这条边必然会有环,并且环在树上的部分一定是最...

2019-06-13 13:29:46 340

原创 2019 UESTC ACM Training for Graph[A] (二分+拓扑排序)

题意:给你一个n个点m条边的带权有向图,让你翻转一些边使得这个图无环,翻转的代价是所有边权中的最大值,你需要让这个代价最小。首先在图论中有这样一个结论:若给一张无环的有向图,让你给图中某些点对间连有向边,总有一种方案使得图依旧是无环的。因为将原图进行拓扑排序后,对于每个点对,从拓扑序较小的点连向拓扑序较大的点,若拓扑序相同则随意。图一定的无环的。因此我们就将题意转化为:在给出的图中删去一些边...

2019-06-13 13:23:50 95

原创 CTF-RE-文件数据修复

题目大致意图是:解密CTF.ctf文件,然后再从中找到flag。由于.ctf文件损坏,并且解密程序可以判断.ctf文件损坏,因此首先选择逆向这个判断条件。由于有打开文件的操作,所以可以ollydbg打开,找到CreateFile函数下断点F9在CreateFile函数停止,发现下面有一串Readfile函数,这个函数被多次调用。显然是在读取文件中的信息。找到离我们最近的一...

2019-06-09 17:24:36 1890

原创 CTF-Misc-Rar文件中的crc碰撞

Misc中的有一类题目是要求我们知道加密后的rar文件中的内容。但是rar文件密码我们不知道,直接爆破密码也不是很现实。但是当文件的大小比较小,或者字符数量较少时,就可以根据crc校验码来爆破出rar内部文件的内容。这种类型的rar,flag由flag_0~flag_5组成。rar文件是有密码的,无法直接打开这些文件。可以看到最后一列是对应文件的CRC校验码。并且每个文件只有4字节...

2019-06-09 14:36:48 1207 1

原创 2019 UESTC ACM Training for Data Structures[K](并查集解决条件冲突问题)

题目大意:现在给你一个n长度的串,然后n次询问及回答,在第x至第y位中元素的和 是奇数或是偶数。问从哪一次开始,下一次的回答与之前的是矛盾的。也就是找第一次与前面的条件发冲突的条件,其中 even为偶数 odd为奇数带权并查集和dp。如果L-R的和为偶数,即可看作区间内有偶数个1,其他的都为零。如果L-R的和为奇数,即可看作区间内有奇数个1,其他的都为零。因此我们用前缀和val[i]表示前i...

2019-06-06 12:45:31 59

原创 2019 UESTC ACM Training for Data Structures[C](区间合并+并查集)

问题描述:依次给出n个闭区间(端点都是整数),两个闭区间如果有重合就会合并成一个(端点重合也算)。求新给出一组闭区间时,当前的区间个数。区间合并问题。考虑每次枚举,那么至少得枚举到每一个联通块的边界,联通块在最坏情况下达到n,因此为O(n^2)算法。考虑借助并查集合并区间的“集合”。将区间内的所有点连向左边界。然后更新最小的不属于该集合的元素。在我们对每一次的集合个数进行回答的时候,我们就...

2019-06-06 12:41:43 94

原创 CTF-RE-JustRE (2019第三届强网杯)

首先IDA点开进行静态分析:发现判断函数sub_401610,点进去看之后发现很长一串……前面比较好说,是将前8位字符变hex放入eax寄存器中,第9,10位变hex放入ch(还是dh?)中然后再往下面拉,可以看到很多SSE指令集,但是不是很复杂,网上可以搜到,发现都是一些比较基础数位操作。这个地方的v27在后面会频繁用到,值为第9,10位变hex后的128位填充这里是对...

2019-06-06 12:38:05 670 3

原创 CTF-RE-webassembly (2019强网杯)

打开之后得到三个同名文件,分别是.js .wasm .html.html用浏览器打开,发现让我们输入flag。由于.js在我电脑里好像打不开,没配置相关环境,所以选择通过.wasm进行逆向。.wasm逆向的一般套路,用wasm2c将wasm转化成c伪代码,然后再用gcc -c命令编译但是不链接得到.o文件。注意编译时缺少什么文件就在wasm2c文件夹中复制过去即可。.o文件用ida打开...

2019-06-06 12:37:55 615

原创 2019 UESTC ACM Training for Data Structures[B]

问题描述:给一棵n个节点的树,给出q次询问,每次询问u,v节点的路径上的边权最小值。先将输入的边变负存入,然后按从小到大排序(对应到原边是从大到小)。然后依次枚举每一条边,每一条边的端点判断是否在同一集合中,如果不在,则通过并查集合并。注意合并时要创建新的节点,将这两个端点接入这个新的节点中。然后用val数组表示每个节点的“权值”。对于新创建的节点,将权值赋成合并时两个端点的边权。这样...

2019-06-06 12:37:41 127

原创 CTF-PWN level5(Jarvis Oj)

和level3_x64一样的文件,但是限制不能使用system和execv函数拿shell,但是可以用mmap和mprotect完成本题。我尝试用mprotect来解决,首先mprotect的结构如下:int mprotect(const void *start, size_t len, int prot);参数的含义是:把从start开始长度为len的内存区的保护属性修改为prot...

2019-05-16 12:51:27 241

原创 CTF-RE handcrafted-pyc(XCTF)

打开之后发现一堆字节码。把这堆字节码解压之后写入文件中:import zlibimport base64d=zlib.decompress(base64.b64decode('eJyNVktv00AQXm/eL0igiaFA01IO4cIVCUGFBBJwqRAckLhEIQmtRfPwI0QIeio/hRO/hJ/CiStH2M/prj07diGRP43Hs9+MZ2fWMxbnP6m...

2019-05-15 21:07:25 1039

原创 Codeforces Round 551 D Serval and Rooted Tree

题目大意:给出一棵树,假设有k个叶子节点,则将这k个叶子节点赋值1~k。树上所有节点都有一个操作:求最大值(以"1"表示)或者最小值(以"0"表示),表示在该节点所有儿子节点中求最大/小值。规定树根为1,求最终根节点能得到的最大值。分析:设一个节点u,其子树中叶子节点个数为k,f[u]表示在k个叶子中,u节点能取到的从大到小排序的最高排名。很容易发现,u的数值最大可以为cnt+1-f[u]...

2019-04-15 23:01:19 48

原创 CTF-RE-PacMe(拆解KeyFile保护基础)

本题是《加密与解密》光盘中的一道题。比较经典且易于理解。首先我们点开文件尝试运行点击check按钮,发现文件没有反应,于是使用ida进行分析发现了一个CreateFileA函数,主要作用是打开一个文件,于是下一个断点点击F9进行调试在程序在断点处停止后,点击check按钮显然,这是程序调用函数打开了名为“KwazyWeb.bit”的文件。我们可以用Hex Editor...

2019-03-26 23:08:22 190

原创 POJ 1741 点分治

题目大意:给出一棵有n个节点的树和树中每条边的权值,再给出一个数k,求出树中所有长度小于等于k的路径条数。点分治模板题,主要思路是:1.找到树的重心root,将其当作根。2.对于以root为根的树,一共有两种路径:一种路径过root,一种不过root,即全部在root的一个子树里面。不过由于我们在后面会将树“分治”,所以第二种情况在以后被分治的树中也会变成第一种情况,所以后面只讨论第一...

2019-03-13 19:48:05 47

原创 洛谷 P1514 引水入城

题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个NN行\times M×M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设施有两种,分别为蓄水厂和输水站。蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中。因...

2019-03-02 21:18:50 110

原创 CTF-RE-Evil exe(Jarvis OJ)

做此题需要的预备知识:ESP定律脱壳。如下网站介绍的比较详细且易懂,适合初学者了解:https://blog.csdn.net/qiurisuixiang/article/details/7649799扔进ida发现没有函数,只有一堆乱码。于是猜测可能有壳。用OD打开分析一波:根据 esp定律,我们f8到pushad的下一条指令,记录此时esp的值,并在此处下硬件访问断点。...

2019-03-02 21:01:50 184

原创 CTF-PWN-level4(jarvis oj)

这道题只出现了read函数以及write函数。checksec也只发现了NX。这次并没有给出libc的文件,所以我们可以考虑使用pwntools中的DynELF泄漏system地址,然后将'/bin/sh'写入.bss段中保存,在调用system函数的时候载入.bss保存的相应地址即可exp如下from pwn import *context(os='linux',arch='i3...

2019-02-18 18:09:36 125

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