[SWPUCTF 2021 新生赛]jicao
[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
![](https://images.cnblogs.com/cnblogs_com/blogs/729425/galleries/2326707/o_230724095516_image-20230724172619893.png)
注意:
在请求头中,
json
与HTTP/1.1
之间不能有回车;13行往后叫消息体,消息体与请求头之间需要空行;
id
之后不能加回车,否则回车会被当做id的内容一起传入
最终获得flag:
NSSCTF{c8f8e8d2-ec54-4669-b17a-c459f17ac751}
日期:2023.7.24
作者:y0Zero