攻防世界lottery

很久没写ctf的wp了,今天这道题写了俩个小时,从工具安装配置到使用,总之费了不少心思,所以就来写个wp。
首先这道题是通过用moeny买flag,初始你有20元,但是需要花费9990000元才可以,唯一的途径就是买彩票。

第一步:

首先我们拿到网址,利用御剑扫描,或者在kali利用dirsearch工具扫描

此时我们扫到了git,所以这道题八成是git泄露。

第二步:

我们可以通过Githack来将这些文件保存下来进行代码分析。
GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。
渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。

python3 GitHack.py 网页地址

_8S7QM@K%98@ETABSW.png
拿到泄露的源码之后开始分析代码,我们尝试在彩票号码这里动手脚,我们发现在这里插入图片描述

这里是将输入的numbers跟正确的彩票号码进行比较,这里双等于不考虑数据类型,true1,true2,在这里通过强制类型转换,只要不是0,都是正确的。
这里补充一个知识点“=”“”“=”的区别
在PHP中,=,=是三种不同的操作符,用于不同的用途:

  1. “=”:赋值操作符。它用于将一个值赋给一个变量,例如: a = 10 ; 将 10 赋给变量 a = 10; 将10赋给变量 a=10;10赋给变量a。

  2. “==”: 等于操作符。它用于比较两个值是否相等,不考虑数据类型。如果两个值相等,则返回true;否则返回false。例如: a = = 10 ; 判断 a == 10; 判断 a==10;判断a是否等于10。

  3. “===”: 全等操作符。它用于比较两个值是否相等,且要求数据类型也相同。如果两个值相等且数据类型相同,则返回true;否则返回false。例如: a = = = 10 ; 判断 a === 10; 判断 a===10;判断a是否全等于10。

下面是一个示例来说明它们的区别:

```php
$a = 10; // 赋值操作
$b = "10";
$c = 20;

var_dump($a == $b); // 输出: bool(true),因为在进行比较时,会自动进行类型转换,将字符串转换为整数,所以相等
var_dump($a === $b); // 输出: bool(false),因为全等操作要求值和类型都相同,而$a是整数型,$b是字符串型
var_dump($a == $c); // 输出: bool(false),因为$a和$c的值不相等
var_dump($a === $c); // 输出: bool(false),为$a和$c的值不相等

总结:
- "="是赋值操作符,用于将一个值赋给一个变量。
- "=="是等于操作符,用于比较两个值是否相等,不考虑数据类型。
- "==="是全等操作符,用于比较两个值是否相等,且要求数据类型也相同。
### 第三步
既然true可以使得2==true的话,我们可以想到,把7个号全改成true,这样进行匹配的时候,就可以获得最高奖项。话不多说,直接抓包重放,修改形式:"numbers"=[true,true,true,true,true,true,true]即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/ecaf4ff0c03c41edb7312e3b86ee6450.png#pic_center)


构造两次钱就够了(要注意当生成的win_number中不含0时才会得5000000,构造两次得的钱不够的话再构造一次就好了)
### 总结涉及知识点
设计工具:御剑,GitHacK,bp
涉及知识点:git泄露,代码审计,弱比较
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值