BUUCTF [MRCTF2020]Ez_bypass1

这道题全程我都是用bp做的

拿到题目

我们查看页面源代码得到

代码审计

我们要用get传入id和gg两个参数,id和gg的值要求不能相等,但是id和gg的md5强比较必须相等

复制代码
if(isset($_GET['gg'])&&isset($_GET['id'])) {
    $id=$_GET['id'];
    $gg=$_GET['gg'];
    if (md5($id) === md5($gg) && $id !== $gg) {
        echo 'You got the first step';

进入下一个循环体中,我们看到了这个函数

复制代码
is_numeric($passwd)

s_numeric() 函数用于检测变量是否为数字或数字字符串。

PHP 版本要求:PHP 4, PHP 5, PHP 7

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

复制代码
if(isset($_POST['passwd'])) {
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))
            {
                 if($passwd==1234567)
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php')

所以这串代码是告诉我们如果post个passwd参数,且passwd必须是数字或数字字符串,passwd的值必须与1234567相等,这里就是php的弱绕过,当我们传入1234567a时,就是字符型和数字型进行比较,所以当传入的值passwd=123456a的时候:则会先把1234567admin转化成1234567再进行比较。

我们知道,md5强比较绕过有两种方法,第一种数组绕过,因为md5无法处理数组,返回null时即为true,第二种就是用两个完全相同的md5值绕过,即

array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2

array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

所以,我们用get传入?id[]=1&gg[]=2

然后用bp抓包,传入passwd=1234567a,并将get请求变更为post

需要注意的点时,此时如果重发包过去,页面是没有反应的

我们需要将原先的get传入的参数复制了放在请求行上

因为变更请求时,bp会将get的参数变为post,所以我们需要重新写入

这样我们就得到了flag

总结:

此题不难,但是注意和收获的地方很多

收获:

1.is_numeric() 函数用于检测变量是否为数字或数字字符串,当为浮点数时,返回值为1,即为true

2.php的弱绕过

注意的点:

我们在用bp变更包的请求方式时,如果原先已经传入了get参数,我们变更为post请求时,bp会把原先的get传入的参数和后面加上的参数一样转换成post参数,所以我们需要将原先get传入的参数放在包的请求行上,使其成为get参数,然后才能进行重发包

相关推荐
bug攻城狮1 分钟前
CentOS 7 设置静态 IP 地址
linux·tcp/ip·centos
纳切威10 分钟前
CentOS 7部署Zabbix5.0
linux·运维·centos·zabbix
sunshine-sm13 分钟前
CentOS Steam 9安装 MySQL 8
linux·运维·服务器·数据库·mysql·centos·centos stream
bug攻城狮14 分钟前
CentOS 7 快速检查软件包是否已安装的5种方法
linux·运维·centos
男孩李36 分钟前
浅谈代理流程自动化 (APA)
运维·人工智能·自动化
尚久龙1 小时前
安卓学习 之 用户登录界面的简单实现
android·运维·服务器·学习·手机·android studio·安卓
high20111 小时前
【 运维相关】-- HTTP 压测/负载发生器之新秀 oha
运维·网络协议·http
DONG9991 小时前
ubuntu 22 安装轻量级桌面Xfce并使用xrdp远程桌面连接
linux·运维·ubuntu
呆萌小新@渊洁2 小时前
linux升级系统,重启出现Minimal BASH-like line editingis supported
linux·服务器
東雪蓮☆2 小时前
从零开始掌握 Web 与 Nginx:入门详解
运维·服务器·前端·nginx