pwn
文章平均质量分 74
ha1vk
这个作者很懒,什么都没留下…
展开
-
攻防世界PWN之shaxian题解
shaxian首先,检查一下程序的保护机制然后,我们用IDA分析一下功能1存在溢出free后没有清空指针我们先创建链表三个节点,程序使用的是头插法,因此,当我们释放的时候,第一个节点最后释放,而当我们再申请同样大小的块时,由于fastbin的特性,第一个块就先被申请回来了,这样,我们溢出到节点2的结构体,覆盖指针为函数got表,就能泄露信息#头插法建立链表,c...原创 2020-02-09 22:22:23 · 654 阅读 · 0 评论 -
攻防世界PWN之Hungman题解
Hungman首先,检查一下程序的保护机制然后,我们用IDA分析一下最开始输入名字,根据名字长度申请堆当我们打赢游戏,更改名字时,可以出现溢出之前的堆依然还是那个,而我们的输入的内容可以变得更长,导致溢出到下一个堆块,而下一个堆块正式游戏数据的结构体,我们就可以篡改,改成函数的got表地址,再次打赢游戏,就能泄露信息,同理,再来一次,修改got表而这个游戏是一个...原创 2020-02-09 21:48:53 · 740 阅读 · 0 评论 -
攻防世界PWN之oneman_army题解
oneman_army首先,检查一下程序的保护机制然后,我们用IDA分析一下,9011功能可以溢出最大申请0x1FF大小的堆,申请次数没有限制Delete功能没有把指针清空本题,已知libc为2.27,所以存在tcache bin机制,可以很容易利用。我们肯定是要攻击free_hook或者malloc_hook,那么首先需要泄露地址,而泄露地址,需要利用unso...原创 2020-02-09 21:30:57 · 919 阅读 · 4 评论 -
攻防世界PWN之seddit题解
seddit首先,检查一下程序的保护机制然后,我们用IDA分析一下是一个模拟登陆的程序,密码就是用户名用salt+key来加密后的结果只要我们能够成功登陆admin账号,就能输出答案溢出点在这我们可以让salt的长度为16,这样,key的内容就会写到v5的地址处,这样我们后面再输出,就能得到key,然后我们加密admin字符串,即可得到密码登陆综上,我们...原创 2020-02-09 20:31:16 · 355 阅读 · 0 评论 -
攻防世界PWN之valet!题解
Valet!简单的栈溢出#coding:utf8from pwn import *#sh = remote('111.198.29.45',43798)sh = remote('127.0.0.1',101010)def guess(): sh.sendlineafter('3. Quit','1') #溢出,覆盖s payload = 'aaa\x00a...原创 2020-02-09 10:12:02 · 212 阅读 · 0 评论 -
攻防世界PWN之pwn11题解
pwn11首先,检查一下程序的保护机制然后,我们用IDA分析一下程序会把字符串里的I替换成you,导致strcpy后,s出现栈溢出,直接覆盖到后门函数地址即可后门函数综上,我们的exp脚本#coding:utf8from pwn import *sh = process('./pwn11')sh = remote('111.198.29.45',31...原创 2020-02-09 10:08:52 · 697 阅读 · 0 评论 -
攻防世界PWN之boi题解
Boi首先,检查一下程序的保护机制然后,我们用IDA分析一下看似很复杂,我们发现这是一个服务器程序,并且一开始要发送特殊指令,才能显示出菜单套接字初始化,绑定了本地端口0x539也就是1337这里是接收指令Unpack是将网络字节序转为本机字节序,如x86的小端因此,我们一开始,为了显示出菜单,需要这样sh.sendline('zhaohai...原创 2020-02-09 09:33:56 · 536 阅读 · 3 评论 -
攻防世界PWN之secret_holder题解
secret_holder本题,附件在https://pwn-1253291247.cos.ap-chengdu.myqcloud.com/SecretHolder,刷题网站上没有提供拿到附件,我们先检查一下程序的保护机制然后,我们用IDA分析一下Free后没有清空指针,可以造成多次重复free可以多次创建堆,只要我们free后再创建即可那么,本题,我们可以利用...原创 2020-02-07 21:31:09 · 1035 阅读 · 0 评论 -
攻防世界PWN之RC4题解
RC4首先,检查一下程序的保护机制然后,我们用IDA分析一下,存在栈溢出漏洞由于开启了canary,因此,我们需要泄露canary,由于低位覆盖泄露出来的信息是加密的,解密可能比较麻烦,我们另选其他方法。功能a里有一个不起眼的漏洞后面,输出了v7的内容然而,v6和v7仅仅在dword_6020CC = 0时被初始化,如果它们未初始化,其值会是什么?如果v...原创 2020-02-06 18:01:48 · 562 阅读 · 0 评论 -
攻防世界PWN之interpreter-200题解
interpreter-200这是一个befunge程序解释器,befunge程序的语法参考https://www.jianshu.com/p/ed929cf72312,还有官方的文档在https://esolangs.org/wiki/Befunge另外本文参考国外的一篇,加以自己的理解,做了简化https://uaf.io/exploitation/2016/09/05/Tokyo...原创 2020-02-06 15:15:16 · 612 阅读 · 0 评论 -
攻防世界PWN之easy_fmt题解
Easyfmt首先,检查一下程序的保护机制然后,我们用IDA分析一下存在一个明显的格式化字符串漏洞,但是只能用一次,后面exit(0)会结束程序CheckIn需要爆破是一个随机数,且只有一位,我们直接输入2,成功率1/10为了不让程序退出,多次利用printf,我们就得利用第一次的printf把exit的got表内容修改为0x400982,这样,我们就能一直处于...原创 2020-02-05 21:27:36 · 2591 阅读 · 2 评论 -
攻防世界PWN之250题解
250首先,检查一下程序的保护机制然后,我们用IDA分析一下程序存在明显的栈溢出漏洞并且glibc被静态编译到了程序中由于没有开启PIE,且glibc被静态编译包含,那么我们有很多方式get shell,这里,我们使用的是dl_make_stack_executable使得栈变得可执行,然后在栈里布下shellcode来getshell为了节省步骤,我们直接...原创 2020-02-05 20:50:22 · 1062 阅读 · 0 评论 -
攻防世界PWN之stackoverflow(栈溢出盲打)题解
Stackoverflow这题,没有提供给我们二进制文件,仅仅有一个可交互的地址。由题意也可以知道,它存在栈溢出。这是一个栈溢出盲打的题目。首先,就是确定栈溢出的长度我们发现,当我们输入23个整数后,就发生了溢出报错,同时,我们也知道了,这个程序开启了canary机制,这正好被我们利用起来判断栈溢出的长度。接下来,就是泄露栈数据了,主要依靠功能3,它会把数组里的数据相邻的去重后...原创 2020-01-28 11:18:38 · 2036 阅读 · 0 评论 -
攻防世界PWN之Nobug题解
Nobug首先,检查一下程序的保护机制PIE和NX没开,那么,我们可以轻松的布置shellcode到栈里或bss段或堆里,然后跳转。免去了泄露libc地址这些。然后,我们用IDA分析一下看似好像这里sprintf不存在漏洞,我们再看看其他函数看见一个很复杂的函数,我们看看那个地址处是什么是查表法,看起来像某种加密或解密算法,又由于不需要秘钥,我们推测可能是b...原创 2019-12-20 13:17:54 · 1329 阅读 · 0 评论 -
攻防世界PWN之Play(条件竞争)题解
Play(条件竞争,多进程共享同一数据区域)首先,检查一下程序的保护机制,很好然后,我们用IDA分析,发现一个很明显的栈溢出漏洞但是,要想执行这个漏洞函数,就必须打赢游戏而,要打赢游戏,就是让*(_DWORD *)(gMonster + 8)的值小于等于0,也就是Host的Surplus要小于等于0然后,我们看到这里有一个修改(gMonster + 8)值的地方...原创 2019-12-19 15:56:57 · 1879 阅读 · 0 评论 -
攻防世界PWN之calc2题解
calc2首先,检查一下程序的保护机制然后,我们用IDA分析一下,发现libc被静态编译进了程序中,又由于没有开启PIE,,所以,我们就直接可以获得需要的函数的地址。然而,我们发现,system、execve这些函数都没有,有没有one_gadget,那么我们只能通过系统调用来构造ROP执行/bin/sh来getshell发现,该程序是一个四则运算表达式计算程序其中,我...原创 2019-12-12 22:02:45 · 1097 阅读 · 0 评论 -
攻防世界PWN之Magic题解
Magic本题知识点,FILE结构体的攻击首先,检查一下程序的保护机制,发现PIE和RELRO没有开启,或许我们可以很方便的修改GOT表然后,我们用IDA分析一下,发现wizard_spell函数存在数组下标向负数越界的漏洞然后是create函数然后,我们用IDA调试一下,发现wizards[-2]处就是log_file的地址,而这句可以修改FILE结构体的第40字...原创 2019-12-10 17:43:49 · 1444 阅读 · 1 评论 -
攻防世界PWN之house_of_grey题解
house_of_grey首先,检查一下程序的保护机制,发现保护全开然后,我们用IDA分析一下发现是一个读取文件并显示的程序,除了flag文件,其他文件都可以读取程序有个缓冲区溢出漏洞可以溢出,修改v8指针,然后我们就可以利用功能4,实现任意地址写由于可以读取除了flag之外的文件,那么我们可以读取/proc/self/maps文件Linux 内核提...原创 2019-12-09 16:44:36 · 1835 阅读 · 0 评论 -
swpuctf2019 Login pwn详细题解
Login这是swpuctf2019的第二道pwn题,主要考点就是非栈上的字符串格式化漏洞利用。首先,我们检查一下程序的保护机制PIE和RELRO没有开启,那么我们可以轻易的利用漏洞修改GOT表我们用IDA分析一下在这里,有一个明显的格式化字符串漏洞,由于s1不是在栈上,而是在bss段里,所以漏洞利用起来会比栈上的字符串格式化漏洞稍微繁琐一些。由于外层是一个死循环,所以...原创 2019-12-09 15:08:58 · 1690 阅读 · 0 评论 -
swpuctf2019 p1KkHeap 详细题解
p1KkHeap这是swpuctf2019的一题,让我们来详细分析一下本题的知识点:tcache bin,unsorted bin,malloc hook首先,我们检查一下程序的保护机制,发现保护全开然后,我们用IDA分析一下最大允许创建0x100的堆,并且最多有8个堆漏洞点在这里,free后,只把大小置为0,而没有把堆指针置为0,存在UAF漏洞本题,del...原创 2019-12-08 22:51:58 · 1473 阅读 · 1 评论 -
2019 D^3CTF unprintableV详细题解
unprintableV这是2019 d3ctf的一道pwn题,由于当时知识储备不够没做出来,赛后就好好研究,从中学到了新的知识本题用到的知识有:ROP、stdout指针与stderr指针、栈迁移、格式化字符串漏洞首先,我们检查一下程序的保护机制除了canary,其它的保护都开了然后,我们用IDA分析一下这个沙箱函数,把execve函数给禁用了,所以,我们不能getsh...原创 2019-11-30 13:58:29 · 1576 阅读 · 0 评论 -
2019 D^3CTF new_heap详细题解
new_heap(高质量题)这题是2019 d3ctf赛的一题,当时没做出来,后来看了大佬的exp脚本,慢慢研究,终于明白了原理,现在,我们就来详细的解析一下这题首先,我们还是检查一下程序的保护机制,保护全开再看一下给我们的libc.so.6的版本,可见是glibc2.29,那么对于堆的管理,就存在tcache机制程序只有简单的3个功能,没有show,也没有edit,这让我...原创 2019-11-28 23:06:50 · 1480 阅读 · 0 评论 -
攻防世界PWN之shell题解
shell首先,检查一下程序的保护机制然后,我们用IDA分析存在栈溢出漏洞我们先运行程序,发现可以直接输命令然而,其他命令都不可用,需要登录成功才能用我们看看登录的逻辑程序从creds.txt文件中一行一行的读取,取第一个冒号后面的内容为用户名,取第二个冒号后面的内容为密码只要我们输入的用户名和密码存在于那个文件,就登录成功,然后就能执行shel...原创 2019-11-22 13:10:49 · 1451 阅读 · 0 评论 -
攻防世界PWN之notebook题解
Notebook研究了一下,做出来的人挺少,还挺有成就感首先,检查一下程序的保护机制,发现PIE和RELRO未开启然后,我们用IDA分析一下,看起来好复杂的样子发现有溢出和格式化字符串漏洞首先当然是想到利用格式化字符串漏洞来泄露canary的值要想执行格式化字符串漏洞,得满足那个if条件我想了好久,才反应过来,如果有传入格式化的字符串,这个条件就不可...原创 2019-11-21 22:06:31 · 534 阅读 · 0 评论 -
攻防世界PWN之Babyheap(null off by one)题解
Babyheap(null off by one)本题用到的知识malloc_hook、realloc_hook、fastbin attack、unsorted bin合并首先,检查一下程序的保护机制,保护全开然后用IDA分析,发现在创建并读入数据时,有一个null off by one漏洞我们所能利用的也就是这个漏洞第一步仍然是想办法泄露一些关键地址由于可以溢...原创 2019-11-20 22:51:55 · 2159 阅读 · 4 评论 -
攻防世界PWN之RCalc题解
RCalc首先,检查一下程序的保护机制,还不错,只开了NX然后,我们用IDA分析看到这,感觉像是堆的题,应该会很复杂。然而,我们再看看其他地方,发现这个函数只是在初始化时调用的,也不太可能会被利用,而且程序全程没有调用free函数然后,我们瞧瞧其他函数,看到这里感觉好复杂,然而,它只是一个用来生成随机数的函数罢了然后,我们继续看其他函数这个样子,好像是can...原创 2019-11-19 17:57:08 · 1416 阅读 · 2 评论 -
攻防世界PWN之dubblesort题解
dubblesort首先看一下程序的保护机制保护全开,并且是一个32位程序然后,我们用IDA分析一下这里,有两个漏洞第一个是在调用read之前,没有调用memset对buf清空,因此,buf里可能之前会有一些残留的关键数据第二个是,输入的整数个数没有上限,可以造成数据溢出,其实也就是栈溢出。我们在read断点,然后观察栈中的数据,发现数据还未输入时,栈里就...原创 2019-11-18 21:14:45 · 1144 阅读 · 2 评论 -
攻防世界PWN之echo_back题解
echo_back首先,检查一下程序的保护机制,发现保护全开然后,我们用IDA分析一下,在功能2有一个明显的格式化输出字符串漏洞但是,我们能够输入的字符串长度最多为7个字符好啦,不管怎么说,首先得用这个漏洞泄露一些地址当我们要执行printf时,我们发现,距离当前栈顶13个位置处,有__libc_start_main+F0的地址,但是,这不是说要输出它的值...原创 2019-11-17 22:44:52 · 2622 阅读 · 9 评论 -
攻防世界PWN之Supermarket题解
Supermarket首先,看一下程序的保护机制。看起来还不错然后,我们用IDA分析一下分析出程序大概有这样的一个结构体typedefstructNode{ charname[16]; intprice; intdescription_size; char*description; }Node;...原创 2019-11-15 22:21:43 · 2303 阅读 · 3 评论 -
攻防世界PWN之EasyPwn题解
EasyPwn首先,看一下程序的保护机制开启了CANARY、NX和PIE,RELRO部分开启,我们可以改写GOT表然后,我们用IDA分析read的maxsize参数比变量的空间大小要小,因此无法溢出到栈底,加上开启了PIE,因此排除了ROP的方法我们再仔细观察一下,发现snprintf在执行的过程中,v2可以溢出到v3,而v3存储的是格式化字符串,因此,我们可以溢出v2...原创 2019-11-15 17:40:00 · 3854 阅读 · 0 评论 -
攻防世界PWN之Noleak(一题学了好多知识)题解
Noleak本题需要用到的知识有:malloc_hook、unsorted bin unlink、fastbin attack、partial write bypass PIE首先,介绍一下malloc_hook,这是C语言提供的一个用来包装malloc的,类似还有free_hook,具体可以查阅相关资料学习Malloc hook我们看如下代码#include&...原创 2019-11-13 21:42:46 · 3766 阅读 · 4 评论 -
攻防世界PWN之note-service2题解
note-service2首先看一下程序的保护机制,注意,PIE是开启的,这个checksec检测PIE有时候不准确。不过,我们看到NX是关闭的,说明堆栈的数据可以被当做指令执行然后,我们用IDA分析一下,发现是一个很简单程序,并且只有添加和删除功能,其他功能未实现创建这里,有三处值得我们注意创建的堆空间大小最多为8字节 保存堆指针的数组下标可以越界既然数组下...原创 2019-11-10 22:31:54 · 2812 阅读 · 11 评论 -
攻防世界PWN之secret_file题解
首先,我们看一下程序的保护机制吓了一跳,几个关键保护全开。然后,我们用IDA分析一下好像很复杂的样子。以往的ROP这些都用不了。然而,只要这个条件成立,就可以执行popen了。其中,我们发现v15是一个定值,在这里面被初始化,调试后发现是一个字符串9387a00e31e413c55af9c08c69cd119ab4685ef3bc8bcbe1cf82161119457127...原创 2019-11-10 15:12:58 · 1920 阅读 · 0 评论 -
攻防世界PWN之format2题解
format2(整数地址空间溢出)本题需要细心首先,检测一下程序保护机制虽然说开启了CANARY,但是关键的几个函数没有开启这个机制,这道题因为libc库静态链接到文件里,所以才造成这种干扰。我们用IDA分析一下后门函数溢出点在这,memcpy传入的是v4的地址,而v4是int,最多也就8字节,因此这里可以溢出程序的流程是将我们输入的字符串进行BASE6...原创 2019-11-10 14:13:32 · 711 阅读 · 0 评论 -
攻防世界PWN之Recho题解
Recho首先,还是查看一下程序的保护机制。看起来不错。然后用IDA分析看起来是一个很简单的溢出,然而,这题的难点在于这个循环如何结束。read一直都是真,如果是在linux终端上直接运行,我们可以用Ctrl+D,然而,pwn远程,就无法处理这种信号。幸运的是pwntools提供了一个shutdown功能,该功能可以关闭流,如果我们关闭输入流,这个循环就结束了。但是我们别想再次...原创 2019-11-09 22:40:22 · 2385 阅读 · 3 评论 -
攻防世界PWN之Hacknote题解
Hacknote首先,查看程序的保护机制然后拖入IDA分析这是创建堆,并写入信息。经过分析,大概是这样的typedefstructNote{ void*func;//函数指针 char*buf;//内容指针 }Note; //保存Node的指针数组 Note*notes[5]; int...原创 2019-11-09 16:09:44 · 1461 阅读 · 0 评论 -
攻防世界PWN之greeting-150题解
greeting-150首先看一下保护机制然后我们拖入IDA,发现是一个很简单的程序。然而,最后的那个printf(&s);存在格式化字符串漏洞,可以造成任意地址的读写。首先,我们需要确定我们输入的数据的相对位置。经过测试,我们需要在前面填充2个字符,然后接下来我们的数据会位于第12个位置那么,我们的payload = ‘aa’ + p32(a...原创 2019-11-09 11:44:08 · 2015 阅读 · 0 评论 -
攻防世界PWN之1000levels题解
1000levevls本题是一个栈溢出题,难点在于开启了PIE,因此里面的函数地址是随机的。溢出点在这里让我们看看提示功能的函数看看它的汇编代码不管条件是否成立,system的地址都会保存到这个函数的rbp-110h处,也就是当前函数的栈顶。我们再看看这个函数我们进去看看如果我们输入的levels大于0,v7才有初始化,那么,如果没有初始化,...原创 2019-11-09 10:25:10 · 973 阅读 · 0 评论 -
攻防世界PWN之Welpwn题解
首先用IDA查看发现主函数不能栈溢出,我们看看echo这个函数echo会把主函数输入的字符串复制到局部的s2里,并且s2只有16字节,可以造成溢出。Echo函数先循环复制字符到s2,如果遇到0,就结束复制,然后输出s2。因此,我们如果想直接覆盖函数返回地址,那么我们的目标函数必须没有参数,否则,我们用p64(…)包装地址时,必然会出现0。比如我们的payload为payload...原创 2019-11-06 22:12:48 · 1582 阅读 · 2 评论 -
攻防世界PWN之Babyfengshui题解
本题,首先,为了方便调试,我们需要解决alarm clock问题程序运行几十秒后就会自动退出,所以,为了方便调试,我们需要先修改一下这个二进制我们用十六进制编辑器把这几个指令nop(0x90)掉即可然后,我们就开始做题了查看创建功能的函数这里创建了两个堆,第一个堆用来存储description,第二个堆用来存储第一个堆的指针以及name字符串其数据...原创 2019-11-06 14:54:42 · 995 阅读 · 0 评论