CTF-PWN
文章平均质量分 98
SuperGate
I bade myself farewell
展开
-
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 · 2428 阅读 · 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 · 959 阅读 · 1 评论 -
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 · 859 阅读 · 0 评论 -
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 · 1107 阅读 · 0 评论 -
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 · 1179 阅读 · 0 评论 -
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 · 1145 阅读 · 0 评论 -
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 · 838 阅读 · 0 评论 -
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 · 911 阅读 · 0 评论 -
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 · 570 阅读 · 0 评论 -
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 · 742 阅读 · 1 评论 -
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 · 621 阅读 · 0 评论 -
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 · 720 阅读 · 0 评论 -
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 · 929 阅读 · 0 评论 -
CTF-PWN-printf(实验吧|格式化字符漏洞)
首先运行文件,发现需要输入name,于是打开ida逆向出正确的name,来到了程序主界面。首先我们先逐一判断函数的用途。put_file是让我们输入文本名称和内容,get_file是让我们输入文本名称,然后程序输出文本内容。show_dir是按照先来后出输出所有的文本名称,并且无缝衔接。这个时候我们发现get_file函数中显然有一个格式化字符漏洞。这种漏洞会导致我们可以控制任意内存的...原创 2019-02-01 23:25:41 · 3273 阅读 · 0 评论 -
CTF-PWN-babysc(Hgame)
直接运行该程序,发现没有任何提示信息,随便输入一串字符之后,程序错误退出。扔进ida查看:程序用read函数读入buf,然后判断[rbp+var_4]和0x4f的大小关系。这里可以知道[rbp+var_4]应为循环变量,buf长度为80然后对于buf[i] ,异或buf[i]^(i+1),最后将buf蕴含的指令赋值给rdx并执行。我们可以考虑直接构造system(/bin/sh...原创 2019-02-04 14:13:33 · 792 阅读 · 1 评论 -
CTF-PWN-level3(Jarvis OJ)
发现这个系列的题构造都差不多……不过不同的是这道题中没有给出system的地址。checksec一下发现cannary没开,于是分析read函数,发现可以栈溢出。基本思路就是先利用第二个write函数打印出write函数的got表地址。然后再在给出的libc库中找到write函数的地址,计算偏移值offset。再从libc库中找到system,/bin/sh的地址,通过offset和栈溢出...原创 2019-02-15 14:06:14 · 474 阅读 · 0 评论 -
CTF-PWN-ROPbaby(实验吧)
学rop的时候刷到的题,感觉很有启发于是就写下来。本文很大程度上借鉴了如下文章:http://wzt.ac.cn/2018/04/02/ROP/进入正题。我们发现题目中给了我们libc的文件,在ropbaby程序中也可以直接查找libc基地址,因此我们就可以不用在主程序中寻找了。首先我们查看ropbaby文件的保护方式由于开了NX,shellcode的方式就不好弄了,因此我...原创 2019-02-07 20:23:22 · 1866 阅读 · 0 评论 -
CTF-PWN-level2(x64)(Jarvis OJ)
这道题和level2的32位版本的漏洞一样,不过32位程序函数的参数是压在栈中的,而64位程序的前6个参数是存在寄存器中的,第7个开始才压入栈中。由于我们的目的是将system函数的参数改为/bin/sh,所以我们考虑用pop edi ret 语句将字符串赋值给edi。同样的,程序中hint存入了/bin/sh,我们直接使用即可。system函数的地址也很容易获得,剩下的就是pop e...原创 2019-02-15 18:44:09 · 506 阅读 · 0 评论 -
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 · 290 阅读 · 0 评论 -
CTF-PWN-CSTW2(Hgame week2)
程序大概就是这么回事,read_int顾名思义,就是一个读入int的函数。虽然题目中要求我们输入的是一个正数,但是我们可以输入负数,可以将其当作一个突破点。if(v5<=23)内部的read_n,第一个参数是输入的字符串存入的首地址,第二个参数是读入的长度。这个0x6020e0非常可疑,我们可以先进入其中查看。 发现这是一个程序中的地址,因此在进行字符串读入的时候,字符串被存...原创 2019-02-13 21:36:53 · 350 阅读 · 0 评论 -
CTF-PWN-level1(Jarvis oj)[栈上shellcode的执行]
checksec发现没有开保护机制,所以我们可以考虑使用shellcode方法pwn掉。查看vulnerable_function函数内部发现程序直接给我们了buf的首地址。点进去看之后发现,buf只能存0x88个字符,但是我们可以读入0x100个字符。由于读入的时候字符串会暂时存在栈上,我们可以考虑覆盖return的地址到buf的首地址中,然后在buf首地址开始写入shellcode...原创 2019-02-14 14:39:40 · 854 阅读 · 0 评论 -
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 · 831 阅读 · 0 评论 -
CTF-PWN-callme32 [ROP+栈溢出]
首先发现在pwnme函数中有一个明显的缓冲区溢出,长度为40,经调试发现填入44长度的垃圾信息即可填入shellcodeida发现一个重要函数如下:点入后发现这三个函数为系统级调用。正好题目给了我们一个.so文件。进入查看,发现有这三个函数的反编译。依次是将加密后的flag通过key1,key2解密。调用顺序应该是callme_one -> callme_two -> c...原创 2019-08-13 15:07:50 · 930 阅读 · 0 评论 -
基本的基于堆的栈溢出
该漏洞发掘的目的是向password文件添加一个具有root权限和已知密码项的额外项在linux环境下实现。目标程序notetaker.c,源码如下:void fatal(char *message){ char error_message[100]; strcpy(error_message,"[!!]Fatal Error "); strncat(error_...原创 2019-01-05 16:32:51 · 306 阅读 · 0 评论