CTF-lottery[git文件泄露利用+PHP弱类型]
知识点:PHP弱类型
.git文件泄露
玩攻防世界 遇到一个题lottery 进去看看 分析玩法
我们发现 进入登陆用户都是初始值 金钱是20 彩票号码必须输入7位 然后看你输入的彩票号码有多少个重复。
然后我们还发现 flag是可以购买的只要你金钱够。。。 这时间我们猜想可能他让我彩票赢钱来获取flag 一时思路是 暴力…
习惯拿到网站 先上AWVS 扫描 我们扫描出了.git
我们可以利用这个.git漏洞
首先我们来了解下.Git这个东西
Git信息泄露的危害很大,渗透测试人员、攻击者,可直接从源码获取敏感配置信息(如:邮箱,数据库),也可以进一步审计代码,挖掘文件上传、SQL注射等安全漏洞
需要的工具就是GitHack
获取工具代码:https://github.com/lijiejie/GitHack
GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。
渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。
## 工作原理 ##
* 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
* 去.git/objects/ 文件夹下下载对应的文件
* zlib解压文件,按原始的目录结构写入源代码
## 用法示例 ##
GitHack.py http://www.openssl.org/.git/
我们打开软件直接可以获取他的目录结构源代码
通过分析
通过这一段代码分析我们注意89行 他有有个判断 判断我们输入的值有多少个相等 有一个$same_count++一次。
我们再看下面代码 如果有$same_count=2 则就给prize=5 prize就是我们的金钱 也就是说你两个数值对上才给你奖励5 我们看到最后要是7个都对上就奖励5000000这样我们就可以购买flag了
先看点PHP弱类型小知识
PHP有两种比较符号==与===
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较
上述php弱类型基础引用 https://www.cnblogs.com/Mrsm1th/p/6745532.html
我们再回到上面的代码分析 只要相等 那就是为真 这里是一个PHP弱类型比较 那么我们是不是可以构造这样的语法 都为true 也就是7个true, true, true, true, true, true, true
开启抓包修改值
修改后
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
Forward
我们要多重复几次这样我们才能赚够钱买
OJBK 直接购买flag
OK 完成