[SWPUCTF 2021 新生赛]jicao

发布时间 2023-07-24 18:02:39作者: y0Zero

[SWPUCTF 2021 新生赛]jicao

题目来源:nssctf

题目类似:web

涉及考点:代码审计

1. 直接看题,给了一串php代码

<?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,GET传入json,且当 id="wllmNB" && json['x']="wllm" 时回显flag

这里介绍一下json_decode()

作用:将字符串转为数组

举例如下:

<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json)); 
?> 
输出
array{ 
["a"] => int(1) 
["b"] => int(2) 
["c"] => int(3) 
["d"] => int(4) 
["e"] => int(5)

2. bp抓包传参

因为没有过滤规则,我们直接令 id=wllmNB

json_decode()之后,$json 相当于一个键值对,要求json['x']="wllm",于是我们传入json={"x":"wllm"}即可

注意POST传参时需要加上媒体类型信息:Content-Type: application/x-www-form-urlencoded

注意:

在请求头中,jsonHTTP/1.1直接不能有回车;

13行往后叫消息体,消息体与请求头直接需要空行;

id 之后不能加回车,否则回车会被当做id的内容一起传入

最终获得flag:

NSSCTF{c8f8e8d2-ec54-4669-b17a-c459f17ac751}

日期:2023.7.24

作者:y0Zero