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 ...
随机推荐
- SpringBoot集成mybatis和mybatis generator
利用搭建的基本的spring boot框架,集成 mybatis + generator 1.设置 maven 的相关配置: File - setting - maven 设置 Maven home ...
- React 官网列子学习
一个有状态的组件 除了接受输入数据(通过 this.props ),组件还可以保持内部状态数据(通过this.state ).当一个组件的状态数据的变化,展现的标记将被重新调用render() 更新. ...
- 微软高性能缓存AppFabric (一) 安装
博客原文链接:http://www.cnblogs.com/Qbit/p/6088703.html AppFabric 缓存功能的前身是VeloCity ,它是基于windows平台的一个高速内存缓存 ...
- ZooKeeper保证之单一视图(Single System Image)
由于ZooKeeper的数据模型简单且全部在内存中,ZooKeeper的速度非常快.它提供了一系列保证(Guarantees): • 顺序一致性(Sequential Consistency) • 原 ...
- js 生成随机数解决缓存的问题
对于缓存有一个解决方法是在链接后添加随机数 例如登陆后跳转到链接/home,但是有缓存上次用户的登陆名,于是在/home后面加上一个随机数 var href = '/home?'+Math.rando ...
- JPA将查询结果转换为DTO对象
前言 JPA支持使用@Query自定义查询,查询的结果需要字节用DTO对象接收,如果使用HQL的查询语句,可以将直接将DTO对象的构造方法传入hql中,直接转为DTO对象:而如果使用native sq ...
- MVC文件下载和webform也能使用的下载方法
public ActionResult Index() { DownloadMethod("text/plain", "C:/Users/sunny/Pictures/S ...
- UVA Live Archive 4394 String painter(区间dp)
区间dp,两个str一起考虑很难转移. 看了别人题解以后才知道是做两次dp. dp1.str1最坏情况下和str2完全不相同,相当于从空白串开始刷. 对于一个区间,有两种刷法,一起刷,或者分开来刷. ...
- CXF学习记录
1 apache CXF入门 1.1 下载 官网:cxf.apache.org 下载CXF的开发包: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 X ...
- C语言正整数除法向上取整
在网上发现一个简单的向上取整方法: 这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢? 我们可以证明: <N/M>=[(N-1)/M]+1 (0< ...