小六推荐了这个靶场,好久没玩玩靶场了,扫了一眼,题目都是比较感兴趣的,打一打,顺便总结整理一下平时挖洞时思路与技巧。前段时间心血来潮在看GoF设计模式,花费了很多时间用来学习和练习,看这个进度也是要等好久才能输出关于设计模式的文章了,安卓逆向进度也放一放,慢慢来吧。
既然是SRC,那这个系列就点到为止,尽量不使用自动化工具,手工证明即可,不以拿flag为目标。
支付漏洞
这里的支付漏洞还是相当简单的,也是面试中的常被问到的点。
简单支付漏洞之整数溢出
做这道题之前,需要了解一些基础的数值的数据类型:
| 类型 | 符号性 | 字节数 | 数值范围 |
|---|---|---|---|
| int8 | 有符号 | 1 | -128 ~ 127 |
| uint8 | 无符号 | 1 | 0 ~ 255 |
| int16 | 有符号 | 2 | -32768 ~ 32767 |
| uint16 | 无符号 | 2 | 0 ~ 65535 |
| int32 | 有符号 | 4 | -2147483648 ~ 2147483647 |
| uint32 | 无符号 | 4 | 0 ~ 4294967295 |
| int64 | 有符号 | 8 | -9223372036854775808 ~ 9223372036854775807 |
| uint64 | 无符号 | 8 | 0 ~ 18446744073709551615 |
可以参考一下月神的这个科普视频: 【最大值溢出漏洞挖掘科普-月神】
就拿int8来举例子吧,有符号的数是通过补码的最高位来表示正负,1是负数,0是正数,那么int8类型的最大值就是0111 1111,如果在这个基础上+1的话,就变成了1000 0000,就是负数中的最小值,通过补码转换就是-128,所以就会出现,int8类型的127+1=-128,然后还有一种情况,这种是正常的补码运算,就是-1 + 1,也就是1111 1111 + 0000 0001 = 1 0000 0000,进位舍弃,结果为0000 0000,也就是0。所以,整数数值就相当于首尾相连。
来分析分析这个场景吧:
现在我们有1000元,目标商品是2400元,通过金额整数溢出来达成购买商品。



分析一下,这里上传了数量,我们能控制的有用参数貌似只有数量,商品单价是2400,看一下参数有什么限制。

这里限制死了,只能上传大于等于0的参数,这里尝试上传一个大数
推测这里使用的是int32,月神那个视频里也提及了,微信支付使用的也是int32。反复测试一下,总金额没有超过2147483647,尝试进行刚刚好溢出,可能付款的值就小于当前值,数量为q, 2400*q -> 2147483647+2147483648,计算出q的值取整然后+1。

简单支付漏洞之优惠券数量
这个漏洞比较简单啊,成因是上送了优惠券的个数并进行计算,未对购买者持有优惠券数量进行校验。

简单支付漏洞之金额修改
这个漏洞也比较简单,上送了支付金额,推荐后端开发时,不进行上送利率、金额、总价等,只上送产品的id、个数并进行严格的过滤。


简单支付漏洞之订单编号
这个的思路也十分的清晰,他的交易逻辑就是先上送产品id和数量,生成订单号,然后通过订单号进行扣费,这里能改的也就是数量,测试一下数量是否做了校验。



简单支付漏洞之四舍五入
感觉没有记录的必要。。。 
简单支付漏洞之优惠券遍历
有问题啊这个靶场,领不了优惠券,但是可以用订单编号那个过,有点失望。。。
越权漏洞
JS不能分析数据又加密,咋整
很简单啊,id越权,然后解JWT,这算非预期?


简单越权漏洞之ID越权
很简单的一个id越权,简单的洞,但是很常见。

简单越权漏洞之JS逆向
本靶场需要进行简单的js逆向,挖掘越权查看他人敏感信息漏洞。
来,让我看看是什么js逆向,我觉得都难不倒我。

这里一看就是一个对称加密,找到算法和key就好了。
找到了加密文件:
1 | ;(function(_0x2f4d, _0x5b7e, _0x8bf6) { |

传入的openid是_0x5d31,在78行打断点,然后将其修改成1即可进行越权查询。
逻辑漏洞
简单漏洞之组合环境一
靶场目标:买下会员专属商品
由于需要手机号验证码登录,所以做了一个验证码平台在8081端口
提示:此环境组合了两种手法,包括一种基础的手法与前面的靶场:《有个接口隐藏了,找到它》的练习手法,靶场不存在弱口令与验证码爆破,请勿浪费性能
重要:验证码平台不参与漏洞逻辑,仅提供接码功能,预期解不涉及验证码平台本身,也不根据验证码平台能提供的信息去猜测
这题的信息如上,反正我是没找到隐藏接口,太菜了,这种拼接谁能想到啊,将8081的接口拼到80的api上,我服了。

然后用获取到的糖糖账号,登录,更改获取手机验证码的接口参数。

登录后购买,这谁能想到啊,我要给差评。

简单-任意用户登录二
简单的任意用户登录
滴滴滴滴,你收到了一个电话,来自13900812231,哦原来是四川成都xx单位的客户,他发给你了一个网站,让你测试有没有漏洞?

既然题目都给出了任意用户登录了,我猜应该是响应包文直接替换就能绕过,尝试了一下,替换并不能直接进去,也不存在未授权,那么接下来看一下这个忘记密码功能和注册功能,任意用户登录在这里也容易出现。
确实可以通过修改响应包来实现跨步,直接修改账号的密码。

然后我尝试修改了题目中给出的手机号,可以修改,但是登录仍然显示封禁中,在我没有思路的时候,我去看了一眼评论区的提示,手机号可以爆破出可以使用的账号

按照刚才的思路,重置一下这个账号,并进行登录

简单逻辑漏洞之任意用户登录


篡改响应包,在请求包中加入主页下方的管理员手机号,别问我为什么这样绕,问出题人棉花糖吧。

SQL注入
真实报告之sql注入

一眼排序注入


拿flag的话直接拿sqlmap跑吧,这里证明一下存在注入点就可以走了。
XSS
xss+csrf的简单模拟

依旧圣杯页,注册一个账号

这个棉花糖怎么这么不正经。。。
这里说是xss+csrf,接管账号的话,直接去找重置密码接口,看看密码重置接口需要的参数是什么。

这里重置密码做的很敷衍啊,很简单,直接开始构造xss吧。

重新创建一个账号,看看是否存在csrf。确实可以更改

这里也存在糖糖的账号,直接登录试试。

也是成功登录上糖糖的账号。
信息泄露
有个接口隐藏了,找到它
直接扫目录,扫到了swagger,拼接接口(这个我是真的想不到得拼接admin,看了评论区才知道要这样整,还是太菜了)

总结
这个SRC靶场就这么打完了,这个靶场还是比较简单的,但有些点确实想不到,多练吧,没别的说的,菜就多练。