pwnable专题

【pwnable.kr】0x02-collision Writeup

题目描述 解法 拉取文件 scp -P2222 col@pwnable.kr:col .scp -P2222 col@pwnable.kr:col.c . 分析源码 #include <stdio.h>#include <string.h>// hashcode值unsigned long hashcode = 0x21DD09EC;// 返回res,对main函数中传参进

【pwnable.kr】horcruxes - 伏地魔的7个魂器 gets栈溢出 截断 atoi转化

本关信息 伏地魔吧自己分裂的灵魂藏在了7哥魂器中…这个描述666。本关要求我们找到所有的魂器然后ROP似乎就可以拿flag了。本关没有给源码,上IDA分析吧。本地运行前安装32位libseccomp库,apt-get install libseccomp-dev:i386。 init初始化abcdefg7个int值,保存在bss段,并计算sum。abcdefg的值生成时使用随机数做为种

【pwnable.kr】 blukat - 权限设置不当导致password可读

本关描述 这一关看着描述就挺奇怪的,scp下来之后居然把password改copy下来了,内容是cat: password: Permission denied。照理没有权限读的话是不会copy下来的。ssh上去看一下就明白了(如下图),当前用户在blukat_pwn组,因此是可以读password的。 看一下代码写的没问题,读取password和输入比较,如果比较成功就输出flag。

【pwnable.kr】unlink - unlink4字节写,劫持ecx到堆中获取main_retaddr

题目信息 直接看源码: 这题思路很清晰,程序模拟了最简单的unlink过程,unlink的本质就是把中间的chunk从前后解链,同时修改前面chunk的fd和后面chunk的bk。如果可以溢出了会被unlink的chunk,32bit下在FD->bk=BK时,拥有一次4bit写的机会,同时需要保证BK->fd可写(BK->fd=FD同理)。 拥有任意地址写的机会后,可以考虑修改程

【pwnable.kr】 asm seccomp sadbox 64位shellcode 读 flag

题目信息 nc之后查看信息如下。根据readme提示,本关是要求登陆服务器后,nc 9026端口连接asm程序来读flag。flag文件名很长。 看了源码发现程序做了如下操作。mmap了一块内存读取shellcode并执行,开启了seccomp沙箱[1],限制只能使用open read write exit exit_group系统调用。因此本关就是利用这些系统调用来写64位下读fla

pwnable 笔记 Toddler's Bottle - coin1

这题考察算法 (分治法) 通过二分法查找便可以解出 题目比较坑的一点是要求在30秒内完成,如果去nc pwnable.kr 9007的话速度会非常慢,一般猜到第四十多次就超时了,为解决这个问题,需要把脚本放在pwnable服务器上去执行 $ ssh fd@pwnable.kr -p2222password: guest$ cd /tmp$ vim a.py$ pytho

pwnable 笔记 Toddler's Bottle - cmd1

应该是考察shell里面的拼接吧 不过这题有bug 不知道为什么会这么容易 过滤了flag 但是没有通配符 所以简单暴力的直接cat f* 就行了

pwnable 笔记 Toddler's Bottle - shellshock

考察bash shellshock 漏洞 CVE-2014-6271 shellshock.c #include <stdio.h>int main(){printf("%d\n",getegid());setresuid(getegid(), getegid(), getegid());setresgid(getegid(), getegid(), getegid());//s

pwnable 笔记 Toddler's Bottle - input

这题考察Linux的各种输入:参数,标准输入输出,环境变量,文件输入输出,socket 解题时用了python的subprocess(用法见我的上一篇博客),做这题挺时间的,题目的各种坑点,我会在后面一一指出 题目源代码:(为了方便本地调试,在源码里加了debug用的put("ok");) <span style="font-family:Microsoft YaHei;font-

pwnable 笔记 Toddler's Bottle - random

random源码: 伪随机数random的值不会变,找到random的值与0xdeadbeef异或即可得到key rand = 0x6b8b4567ans = 0xdeadbeefkey = rand ^ ans#key = 3039230856

pwnable 笔记 Toddler's Bottle - passcode

注: 这题涉及到了GOT覆写技术,我更新了一篇讲GOT覆写的文章,以这道题做的例子,讲的比较详细,大家可以参考一下:  http://blog.csdn.net/smalosnail/article/details/53247502 ------------------------------------------------------------------------------

pwnable.tw hacknote write up

程序分析: 程序有四个操作: 1.Add note 2.Delete note 3.Print note 4.Exit 1.Add note 在bss段中存放note的指针,每一个note 包含两个堆块,add的过程中第一个堆块的数据区的开始四字节存放调用puts的函数地址(0x804862b),随后四个字节存放后面存放content 的堆块的地址 2.Delete note 漏洞点发生在De

pwnable.kr - fd

题目: 题目链接:http://pwnable.kr/play.php ——> 连接登录: ssh fd@pwnable.kr -p2222 查看文件及权限: ls -al 看到flag文件,但是当前用户fd并没有读权限。 查看fd.c cat fd.c 目标:执行system(“/bin/cat flag”); 则:strcmp(“LETMEWIN\n”,

pwnable-1-fd

pwn的学习周期确实比较长,需要的前置内容也很多,了解到第一题还算比较简单的,那就先来体验一波~顺带附一波网站链接:👉网站链接 题目 WP 最后一行给出了ssh链接方式,那就先连接一波 第一次连接会有第四行的询问,yes就行 (这里windows和linux都可以) 当然按一般思路,进来了就先看看有什么文件吧 flag应该就是目标文件,还有两个fd 这么看的话大概要运行fd,

每日一题 pwnable.kr flag

简单的UPX脱壳题 算是第一次接触脱壳题 用ida打开原文件,一看函数这么少,应该是存在压缩壳。 通常压缩壳有两类用途,一种只是单纯用于压缩普通 PE 文件的压缩壳,而另一种则会对源文件进行较大变形,严重破坏 PE 文件头,经常用于压缩恶意程序。 此处简单对比一下加密壳:加密壳或称保护壳,应用有多种防止代码逆向分析的技术,它最主要的功能是保护 PE 免受代码逆向分析。由于加密壳的主要目的不再是

pwnable_hacknote

pwnable_hacknote Arch: i386-32-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x8047000) 32位,没开PIE main部分就不贴了,直接贴主要的函数 unsigned int ADD(){int v0