bugku CTF Web 备份是个好习惯

其实刚开始看到这个真的是一脸懵逼 因为自己是没啥基础来来学习Web安全的 就记录一下自己是怎么解决的吧

从这行东西可以看出来 这是采用md5解密的思路去做
从这行东西可以看出来 这是采用md5解密的思路去做
然后就看提示嘛 备份是个好习惯 那么就用御剑扫描一下后台 或者如果你知道备份文件是.bak后缀 你也可以直接在后面添加index.php.bak 来访问 那么用sublim打开文件之后
就得到了一下源码

<?php /** * Created by PhpStorm. * User: Norse * Date: 2017/8/6 * Time: 20:22 */ include_once "flag.php"; ini_set("display_errors", 0); $str = strstr($_SERVER['REQUEST_URI'], '?'); $str = substr($str,1); $str = str_replace('key','',$str); parse_str($str); echo md5($key1); echo md5($key2); if(md5($key1) == md5($key2) && $key1 !== $key2){ echo $flag."取得flag"; } ?>

strstr是用来检查链接有没有“?”的 (因为后面你要给它赋值 要用到?)
然后substr和str_replace这两个函数的意思就是把你传进来的参数里面的key去掉那么你这时候就要构造一个包含key的参数了 例如kekeyy或者kekeykeyy都行 你把key整个去掉之后是key就好
因为md5()是没有办法处理数组的 一旦传入了数组 就会返回NULL
那么在代码中我们可以看到 if()里面是要求经过md5()函数处理后的返回值相同 但是key1和key2的值是不相同的 那么我们就构造两个不同的数组传进去就好 这样就绕过了!
在这里插入图片描述
哈哈 所以说 php一定要学好啊!不然像我一样 懵逼好久

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值