CTF 两道web整数溢出题目(猫咪银行和ltshop)
①猫咪银行: (2018中科大hackgame)

一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个。
理财是只能买入TDSU才可以获得收益。我们先上来直接把CTB全部换成TDSU。

上边是我们花了所有TDSU:66060买了19分钟后的收益。(因为一个账号最多存在20分钟,计算你用脚本极限也不能买20分钟,必须留一分钟用来换TDSU和买入,取出等操作)
还是不行,算上收益的钱1200231也不够买20个CTB。
考虑买RMX是否存在汇率差。
发现一个CTB57个RMX,一个RMX值115TDSU,也就是一个CTB值6555个TDSU,还不如直接买。
只能考虑另外的情况:
整形溢出
在买入份额上输入很大的数或者负数,都会有错误提示,交易失败。此处不存在整形溢出。
再买入时间上输入很大的数

成功溢出。仔细观察这个值,会发现。

是int64类型的溢出。
直接购买9223372036854775808时间,份额为1000,收益仍为负数。尝试将时间慢慢调小。
9123372036854775808(第二位2改为了1)成功让世间变为负的,且收益为正.(跳不出来慢慢调,后边写下原理)

时间为负的直接去出来就好了,然后兑换flag。
②LTshop(护网杯)
前边的条件竞争不说了,开个burp多线程买几个大辣条,买4个就好了,为啥起码4个,后边有介绍。
其实看到最后的9999999999.......个大辣条换flag也能猜到是溢出。
这里存在uint64整数溢出。
2^64-1为最大值:18446744073709551615
这里如果我们直接输入18446744073709551615,服务器端肯定会先给你 *5,为啥呢?
因为判断你大辣条的数目啊,一个辣条之王得用5个大辣条来换啊,所以溢出过大了,而我们的要求是正好溢出一点点,所以说除以5=3689348814741910323。
这个时候输入3689348814741910323,服务端 *5=18446744073709551615,虽然表面上是18446744073709551615,实际上为0。
所以我们稍微加1,输入3689348814741910324,* 5=18446744073709551620,实际上服务端以为我们只买4个大辣条。所以成功购买那么多大辣条。
总结的问题
①uint64溢出范围0-18446744073709551615(没有负数哟)
②为什么非要买4个大辣条,你输入的数据乘以五后是18446744073709551620。
溢出界限(最大数)是18446744073709551615,也就是说这个数字还没有溢出,一旦加1,就变成了0,也就是说18446744073709551616代表0,以此类推18446744073709551620代表4
③这两个题目溢出类型不一样:
猫咪银行是int64,存在负数,所以构造的时候钱数有可能是负数,所以你得自己计算收益(和买入时间和买入份额有关系。)
ltshop没有负数,不然的话18446744073709551615+1=18446744073709551616实际上代表了-18446744073709551616你得再加上18446744073709551617=36893488147419103233才能代表买一个大辣条。
④关于ltshop为什么是uint64溢出,我也不知道啊,凉了啊。
别人的wp上边是看的cookie,知道了框架,然后才知道的溢出类型,如果你实在不知道什么溢出类型,那你就把这几个溢出类型挨个试一下。
⑤猫咪银行那到题目不是随便买的,而是猜的。
虽然9223372036854775807是最大数,但是你的收益和时间才是最终决定你溢出是否成功的条件。我们得想个办法让你的收益溢出的时候为较大的正数并且满足时间为过去的时间,或者取出时间在20分钟之内。所以我们输入的数要先让他达到溢出的临界值。
然后让这两个数在-9223372036854775808到9223372036854775807之间达到我们想要的,计算的话太麻烦了,不如直接猜,每次一个范围一个范围的测试就好了。
好像太大了也不行,会出问题,比如我一开始输入很大的数,怎么调都是-9223372036854775808
CTF 两道web整数溢出题目(猫咪银行和ltshop)的更多相关文章
- 2019全国大学生信息安全大赛两道web
简单小结 菜鸟第一次打国赛,这次题目质量很高,学到了许多姿势. Web Justsoso 打开题目,源代码出存在提示: 使用LFI读取index.php与hint.php http://d4dc224 ...
- 2019balsn两道web和2019巅峰极客一道web记录
遇到3道有点意思的web,记录一下~ web1 题目地址:http://warmup.balsnctf.com/ 源码如下所示: <?php if (($secret = base64_deco ...
- 2019CISCN华南线下两道web复现
原帖地址 : https://xz.aliyun.com/t/5558 2019CISCN华南线下的两个简单 web 部分题目下载地址,有的不完整 : 点我点我 web 1 考点 : 无参函数的 RC ...
- 几道web前端练习题目
在 HTML 语言中,以下哪个属性不是通用属性?A]<class>B]<title>C]<href>D]<style> 在线练习:http://hove ...
- DASCTF七月赛两道Web题复现
Ezfileinclude(目录穿越) 拿到http://183.129.189.60:10012/image.php?t=1596121010&f=Z3F5LmpwZw== t是时间,可以利 ...
- leetcode简单题目两道(2)
Problem Given an integer, write a function to determine if it is a power of three. Follow up: Could ...
- 程序员---C语言细节7(增加两个整数溢出检测)
主要内容:增加两个整数溢出检测 #include <stdio.h> #include <limits.h> int main(int argc, char *argv[]) ...
- 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)
题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...
- ISITDTU CTF 2020 部分Web题目Writeup
周末,跟着m3w师傅打ISITDTUCTF,m3w师傅带弟弟上分,Tql! Web1 给了源码: <?php class Read{ public $flag; public function ...
随机推荐
- 真正理解 git fetch, git pull 以及 FETCH_HEAD(转)
转自http://www.cnblogs.com/ToDoToTry/p/4095626.html 真正理解 git fetch, git pull 要讲清楚git fetch,git pull,必须 ...
- Mysql数据库学习总结(一)
数据库概念 数据库(Database)是按照数据结构来组织.存储和管理数据,建立在计算机存储设备上的仓库. 简单说,数据库就是存放数据的仓库.和图书馆存放书籍.粮仓存放粮食类似. 数据库分类 分为 关 ...
- [Asp.Net] Form验证中 user.identity为false
这个方法可以是user.identity设置为true FormsAuthentication.SetAuthCookie(Username, true); 但是要开启form验证, 在配置文件中 & ...
- Redis(5.0.0)持久化AOF和 RDB 结合源码分析
主要是挖个坑.候补(代码还没看完..) https://github.com/antirez/redis/tree/5.0 一.Redis保存持久化文件 二.Redis启动加载持久化文件 src/se ...
- [UIImage imageWithContentsOfFile:@""] 内存警告
You will want to use the [UIImage imageWithContentsOfFile:@""] method, as that doesn't cac ...
- 2018.6.29 JavaScript
一.使用JS数组实现冒泡排序 二.创建Teacher对象,添加(姓名.年龄.地址.学生对象[学生姓名,学生性别])属性 要求: 创建多个老师对象,每个老师下管理多个学生,显示每个老师下所有的学生信息 ...
- tensorflow构建CNN模型时的常用接口函数
(1)tf.nn.max_pool()函数 解释: tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=No ...
- js实现全选,反选,全不选
思路:1.获取元素.2.用for循环历遍数组,把checkbox的checked设置为true即实现全选,把checkbox的checked设置为false即实现不选.3.通过if判断,如果check ...
- 1074: [SCOI2007]折纸origami
Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 372 Solved: 229[Submit][Status][Discuss] Descriptio ...
- gravity 使用操作。
gravity 使用操作.最近我司有一个比较奇葩的需求,我们的环境是主从,因为数据量较大会定期的删除数据,最近不行了,要求新建出来一个库 同步正事环境的数据,但是要剔除 delete ,drop,tr ...