moectf之绕过md5+同时向浏览器发送get、post请求。

题目来源:moectf-WEB。

 首先打开给出的网址:网址呈现的代码如下,而且题目中说了,提示我们绕过md5验证。

<?php
error_reporting(0);
include_once "flag.php";
$a=$_GET['a'];
$b=$_POST['b'];
if(isset($a)){
    if($a!=$b&&md5($a)===md5($b)){
        echo $flag;
    }else{
        echo 'try again';
    }
}else{
    highlight_file(__FILE__);
}

有一些编程基础的一定会注意到那个if条件判断句。 

      if($a!=$b&&md5($a)===md5($b))

而且注意到两个变量a,b。

$a=$_GET['a'];            //这个说明a变量是从我们发出的get请求中的参数a的值
$b=$_POST['b'];          //同理b变量是我们发出的post请求的值

那么问题来了,我们怎样同时向浏览器发送get和post请求呢? 

错误想法:由于python中的session有保存登陆状态的功能,我就想着看看能不能先用session发送一个get请求,然后再带上post的参数b发送post请求。代码如下:

import requests

session = requests.session()
url='http://47.98.215.112:78/?a=' //注意:这里还未填充值,因为我们还未设计到绕过md5的步骤,现在正在解决怎么同时发送get和post请求的问题。
data = {
    b:''              //同理:这里也仍然未填充数值。
}
comment = requests.post(url=url, data=data)
print(comment.text)

但是:这种想法是错误的,这个无法完成。 

正确的方法是使用HackBar这个浏览器扩展。 

但是这个HackBar开始收费了,网上有针对特定浏览器版本的破解版,但是我懒得折腾了。直接找了一个免费版替代品--HackBar Quantum。

打开firefox,输入:“hackbar”的搜索结果 – Firefox 附加组件(zh-CN)  安装即可。安装完左侧就出来功能条了。

通过这个工具,我们才可以方便的向浏览器同时发送get和post请求。 

 下面解决第二个问题:怎么绕过md5验证。

参考下面这篇文章:大佬汇总的很好。(9条消息) 总结ctf中 MD5 绕过的一些思路_y0un9er-CSDN博客_ctf md5绕过

我们针对此题目的类型选择:数组绕过。

即传入:

a[]=a&b[]=b 

先在浏览器上输入网址,并且先传入一个参数:先把get请求参数a传入。然后点击回车。

然后在这再把post携带的参数传入。即可得到flag。

猜你喜欢

转载自blog.csdn.net/hacker_zrq/article/details/120395641
今日推荐