一、打开题目环境:
<?php
表示开始
highlight_file('index.php');
highlight_file函数用于对index.php文件进行PHP语法高亮显示
include("flag.php");
包含flag.php文件并运行flag.php文件
$id=$_POST['id'];
表示变量$id值通过POST(发送)方法取得传递过来的id值
$json=json_decode($_GET['json'],true);
把JSON 格式的字符串转换为 PHP数组或对象,true返回值是数组,否则返回值为object
if ($id=="wllmNB"&&$json['x']=="wllm")
if判断语句,&&逻辑运算符号,如果id=wllmNB和json={"x":"wllm"}(类似于python中的字典)则继续向下面执行,补充x的值对应wllm
{echo $flag;}
echo输出函数,输出flag变量的值
?>
表示结束
二、分析代码的总体意思和做题思路:
通过POST请求发送id变量和json变量,当满足它们都存在的时候,就会回显flag
构造payload:
1 id="wllmNB"
2 json={"x":"wllm"}
注意使用英文?号进行拼接
三、开始解题,拿flag:
第一种解题方法使用HackBar插件:
Load URL(加载URL):http://node1.anna.nssctf.cn:28235/?json={"x":"wllm"}
Split URL(分割URL)
Execution(执行)
Post Data(Post数据):id=wllmNB
Execution(执行)页面回显flag:
NSSCTF{eede8268-61e2-4a46-a86d-fc1776a5153d}
第二种解题方法使用python编写脚本:
import requests
# 设置POST和GET参数
post_data = {"id": "wllmNB"}
get_data = {"json": '{"x":"wllm"}'}
# 发送请求到目标网址
response = requests.post("http://node1.anna.nssctf.cn:28235/", data=post_data, params=get_data)
# 打印响应内容
print(response.text)
输出结果:
G:\python\venv\Scripts\python.exe G:/python/0.py
<?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;}
?>
NSSCTF{eede8268-61e2-4a46-a86d-fc1776a5153d}
进程已结束,退出代码0