nssctf[SWPUCTF 2021 新生赛]jicao,[SWPUCTF 2021 新生赛]easy_md5

[SWPUCTF 2021 新生赛]jicao

<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

首先代码审计,用post方式传入一个id,它的值要为wllmNB,用get方法传入一个json,同时会对他进行json解码,解码后值为wllm,则输出flag。

我们来了解一下json对象。

json对象的值只能为:数字(整数或浮点数),字符串(要用双引号包裹),逻辑值(true 或 false),数组(在方括号中),对象(在花括号中),null (空)。

例如:

"grade":90,

"name":"peter";

"student":true;

所以这里我们传入json的值要符合他的规则

得到flag:

NSSCTF{f26c1ec6-17f2-4903-b4bc-e8d8b894bb5d}

[SWPUCTF 2021 新生赛]easy_md5

 <?php 
 highlight_file(__FILE__);
 include 'flag2.php';    //包含了flag2.php这个文件
 
if (isset($_GET['name']) && isset($_POST['password'])){ 
    $name = $_GET['name'];    // 用get方式传入name
    $password = $_POST['password'];    //用post方式传入password
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;  //如果传入的name和password的值不相等,且他们的md5值相等,就输出flag。
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?>
wrong!

代码审计如上

这里我们可以用两种方法,一种是md5绕过,你需要去寻找两个值不相同的但是md5后的值相同的,给你列举几个:


QNKCDZO
240610708
s878926199a
s155964671a

第二种方式是采用数组绕过,payload很简单:

?name[]=1

password[]=2

这样就能使这段代码执行,输出flag。

if ($name != $password && md5($name) == md5($password)){
    echo $flag;
}

NSSCTF{554fa687-013e-4926-9df8-4903f29398ab}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值