Scrabble在git泄漏中的使用

Scrabble下载

一.知识点

  1. .git文件 Git与Git文件导致源码泄露
    简述.git文件导致的源码泄露
    .git文件是开发人员在开发过程中使用 Git(分布式版本控制系统)做开发时产生的隐藏目录,该文件包含一些版本信息和网站源码,数据库信息等敏感信息。
    原理利用
    *通常开发人员在开发时,通常将源码提交到远程的托管网站(如Github)方便管理与交互,等到开发最后阶段,再将源码从远程服务器上下载到 web 目录下, 如果开发人员忘记将其中的 .git文件删除,则可以通过 .git文件恢复网站源码,来获取一些敏感信息;
    *开发人员对站点使用 Git 对版本进行控制,实现自动部署,如果配置不当,直接将 .git文件加载到线上环境,这样便引起了.git文件泄露。

  2. dirsearch的使用:

-u 指定网址

-e 指定网站语言

-w 指定字典

-r 递归目录(跑出目录后,继续跑目录下面的目录)

-random-agents 使用随机UA

python dirsearch.py -u 网址 -e php 或 python .\dirsearch.py -u 网址 -e php
查看响应码为200的目录即可

(一般情况下.zip .7z等压缩文件就是网站源码)
3.linux系统基本操作
4.PHP弱类型:
首先PHP语言中有一些相等的值,如:
’ '0false;

  '123'==123;
  
  'abc'==0;
  
  '123a'==123;
  
  '0x01'==1;
  
  [false]==[0]==[NULL]==[' ']
  
  NULL==false==0
  
   '0e1234567890'=='0e987654321';

在PHP语言中比较两个值相等可以用“”或“=”,前者会在比较时自动进行类型转换而不改变原值,遇到这种类型的题目往往还会有MD5碰撞等知识。
二.例题
1.攻防世界-lottery

打开题目发现要猜数字赚钱买flag,先用dirsearch扫描一下
在这里插入图片描述
根据扫描的结果:
在这里插入图片描述
可以发现有个/robots.txt,打开后看到提示/.git/
推测存在git泄露
在这里插入图片描述
接下来使用scrabble扫描URL,把泄露的文件下载下来
在这里插入图片描述
打开其中的 “api.php” 文件审计代码,注意到这里有个 buy() 函数,发现numbers这个变量可以操控,函数会以数组的形式提取每位数字,变量在和随机生成的 win_numbers 变量比较时使用的是 “==”,也就是说可以用弱类型来绕过。
在这里插入图片描述
由于随机变量是数字,因此我们可以使用 true 来满足比较,但是我们显然不能在输入框输入 7 个 “true”。因此我们考虑修改数据包,通过抓包发现数据的传输是通过传一个映射来上传的,因此抓包之后修改 numbers 变量为一个数组,其中的 7 个变量都是 true。重复几次抓包放包放包之后就能够快速赚钱了,赚够钱后购买得到 flag。

{"action":"buy","numbers":[true,true,true,true,true,true,true]}

2.攻防世界-mfw
通过发现git,用scrabble下载源文件得到flag.php,index.php
在这里插入图片描述
分析代码:源码会接收一个 page 参数,输出 flag 要满足以下 2 句代码,注意到第二句代码是个 assert() 断言,它可以将参数作为代码来执行。

$file = "templates/" . $page . ".php";
assert("strpos('$file', '..') === false")

因此我们考虑让断言执行 cat 命令,直接回显目录下的 flag.php 文件,这样就能看到其中的内容了。构造出的 payload 如下,上传得到 flag。

?page=abc') or system("cat templates/flag.php");//

在这里插入图片描述
这个参数和上述的 file 变量替换,等同于执行了以下代码。首先因为网页不存在 abc 页面,所以使用 strpos() 函数会返回 false,因此代码会执行 or 后面的 system() 函数。最后认为添加个注释,让后面的代码不要执行。

assert("strpos('templates/?page=abc') or system("cat templates/flag.php");//.php', '..') === false")
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值