ISCC2019-WEB4-Writeup

0x00

这道题整体思路是变量覆盖:

PHP中会产生变量覆盖的函数有以下几种可能:

  1. $$使用不当(PHP中这种写法表示可变变量)

  2. extract函数使用不当

  3. parse_str函数使用不当(本题就是这个函数导致的变量覆盖)

  4. import_request_variables使用不当

  5. 开启全局变量

    以上这些变量覆盖的例子可查看如下博客:https://www.jianshu.com/p/a4d782e91852

0x01

分析源代码

打开web页面看到源代码如下:

拿到源代码,一开始并不是能够直接看懂,PHP中有很多不常用的函数,所以就一点点查各个函数的功能,下面贴出对源代码的分析结果:

 

0x02

思路的转折

  1. 经过分析代码,会不会想到要破解hashed_key,但是那是不可逆的,想通过碰撞得到什么时候才能拿到答案???

  1. PHP弱类型?又分析分析代码,不是弱类型

  2. 有没有疑惑,为什么接收的都是URL传递的参数,action用的是$_SERVER接收的而key是$_GET接收的(这个是后来在做其他题时想到的,第一想法就是变量覆盖,只有这样才能够顺利的解决哈希值这一步)

            知道了是变量覆盖就好办了,查了查PHP变量覆盖就看到了parse_url函数

  1. OK,思路有了,下面就开始构造payload了,通过URL传参把hashed_key覆盖就好了

0x03

构造payload如下:

http://39.100.83.188:8066/?action=auth&key=123&hashed_key=a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

后面那个hashed_key是key这个参数的值经过sha256得到的结果

然后提交就看到了下面的页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值