pwnable.kr-uaf-witeup】的更多相关文章

几乎都想要放弃了,感觉学了好久还是什么都不会,这个题好像很难的样子,有很多知识点需要补充一下: 1.[UAF]分配的内存释放后,指针没有因为内存释放而变为NULL,而是继续指向已经释放的内存.攻击者可以利用这个指针对内存进行读写.2.[UAF利用] (1)先搞出来一个迷途指针 (2)精心构造数据填充被释放的内存区域 (3)再次使用该指针,让填充的数据使eip发生跳转. 3.[malloc] 大于512字节的请求,是纯粹的最佳分配,通常取决于FIFO,就是最近使用过的. 小于64字节的请求,这是一…
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest) 先看一下代码 #include <fcntl.h> #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> using namespace std…
0x00: dragon 是一个UAF漏洞的利用. UseAfterFree 是堆的漏洞利用的一种 简单介绍 https://www.owasp.org/index.php/Using_freed_memory 简单的来说就是 再次使用了 free 掉的内存 0x01:简单看一下 运行起来看一下 是一个RPG游戏,有两种角色,每个角色的技能不一样(战士法师之类的吧...) 在进IDA分析的时候,发现龙是分两种的 baby_dragon 和 mommy_dragon,两种的血量和攻击力也各不相同.…
Dragon —— 堆之 uaf 开始堆的学习之旅. uaf漏洞利用到了堆的管理中fastbin的特性,关于堆的各种分配方式参见堆之*bin理解 在SecretLevel函数中,发现了隐藏的system("/bin/sh")调用,虽然无法直接执行,但无疑会是后续进展中的有力武器. 在和恐龙战斗的函数结束部分,发现了free掉但没有置空的free(dragon)语句,而在对战胜利后恰有开辟相同大小的空间,并自主写入的部分,由此产生了uaf漏洞. >>在将dragon的结构体f…
前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下我们的用户名,并不能直接查看flag这个文件.查看passcode.c的源码看一下 #include <stdio.h> #include <stdlib.h> void login(){ int passcode1; int passcode2; printf("enter…
这一题与前两题不同,用到了静态调试工具ida 首先题中给出了源码: #include <stdio.h> #include <string.h> #include <stdlib.h> void func(int key){ ]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); }…
Daddy told me about cool MD5 hash collision today. I wanna do something like that too! ssh col@pwnable.kr -p2222 (pw:guest) 先看源代码: #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const c…
I made a simple brain-fuck language emulation program written in C. The [ ] commands are not implemented yet. However the rest functionality seems working fine. Find a bug and exploit it to get a shell. Download : http://pwnable.kr/bin/bf Download :…
main函数如下: auth函数如下: 程序的流程如下: 输入Authenticate值,并base64解码,将解码的值代入md5_auth函数中 mad5_auth()生成其MD5值并与f87cd601aa7fedca99018a8be88eda34相比,如果相等则调用correct函数,得到shell 找12个字符进行base64加密: 将值输入找到溢出点: 发现AAAA覆盖了main函数的ebp,程序执行到leave出错. leave相当于以下两条指令 指令 含义 MOV ESP, EBP…
i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考到了很多linux下的基本操作,参数输入.管道符.进程间通信等知识,推荐大家可以先看看<深入理解计算机系统这本书>,补补基础 1.Step1(argv) if(argc != 100) return 0; 也就是说输入为一百个参数,其中索引为大写A(65)的值为\x00,索引为B的值为\x20\x…