[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}
标签:name,SWPUCTF,flag,新生,json,2021,md5 From: https://blog.csdn.net/2301_80871705/article/details/142962478