【2025 SWPU-NSSCTF 秋季训练赛】jicao
【实验工具】
Postman或Burp Suite或hackbar
【实验目的】
掌握查看php代码审计能力以及Post请求提交、Json语法等
知识点巩固:
1.Json语法:
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
核心特点:
-
易于读写 - 对人友好,格式清晰
-
易于解析和生成 - 对机器友好
-
语言无关 - 几乎所有编程语言都支持
-
基于文本 - 使用纯文本表示数据
基本语法结构:
// 对象 - 用花括号 {} 表示,键值对形式
{"name": "张三","age": 25,"isStudent": true,"hobbies": ["篮球", "音乐", "阅读"],"address": {"city": "北京","street": "长安街"}
}
// 数组 - 用方括号 [] 表示
["苹果", "香蕉", "橙子"]
// 值可以是:字符串、数字、布尔值、null、对象、数组
常见应用场景:
-
AJAX请求响应数据
-
RESTful API数据传输
-
应用程序配置文件
-
不同系统间的数据交换
2.php代码审计
PHP代码审计是CTF(Capture The Flag)Web方向中非常重要的题型,主要考察选手对PHP语言特性、安全漏洞和代码逻辑的理解能力。
题型特点:
-
目标明确:通常目标是获取flag(敏感文件、数据库信息等)
-
代码量适中:一般几十行到几百行代码
-
漏洞隐蔽:需要深入理解代码逻辑才能发现漏洞
-
结合多种知识:需要PHP语法、Web安全、服务器配置等综合知识
本题遇到函数知识点:
①json表示法详解
https://www.php.net/manual/zh/book.json.php

②json_decode函数详解
https://www.php.net/manual/zh/function.json-decode.php

json_decode用于对传入的JSON格式的字符串进行解码
③$_GET函数详解
https://www.php.net/manual/zh/reserved.variables.get.php

简单来说:php中,利用$_GET函数用于获取HTTP请求包中的GET请求传入的参数
④$_POST函数详解
https://www.php.net/manual/zh/reserved.variables.post.php

简单来说:php中,利用$_POST函数用于获取HTTP请求包中的POST请求传入的参数
3.hackbar使用
Hackbar是一个Firefox的插件,它的功能类似于地址栏,但是它里面的数据不受服务器的相应触发的重定向等其它变化的影响。 有网址的载入于访问,联合查询,各种编码,数据加密功能。这个Hackbar可以帮助你在测试SQL注入,XSS漏洞和网站的安全性,主要是帮助开发人员做代码的安全审计,检查代码,寻找安全漏洞。Hackbar 在Burpsuite中也有该插件

1.开启环境,点击http://node7.anna.nssctf.cn:20384/进入

2.进入页面发现是PHP代码审计题

3.对代码进行分析
<?php
// 高亮显示当前文件(index.php)的源代码
highlight_file('index.php');
// 包含flag.php文件,该文件中定义了$flag变量
include("flag.php");
// 从POST请求中获取名为'id'的参数值,并赋给变量$id
$id=$_POST['id'];
// 从GET请求中获取名为'json'的JSON字符串参数,使用json_decode解析为关联数组
// 第二个参数true表示将JSON对象转换为PHP关联数组而非对象
$json=json_decode($_GET['json'],true);
// 条件判断:如果POST的id等于"wllmNB"且GET的json参数中x键的值等于"wllm"
if ($id=="wllmNB"&&$json['x']=="wllm")
{// 如果条件满足,输出flag(即显示flag内容)echo $flag;
}
?>
4.根据代码分析
当且仅当id、json都等于字符串时,出现flag;据此构造payload
5.payload
GET请求:http://node7.anna.nssctf.cn:20384/?json={"x":"wllm"}
POST请求:id=wllmNB

6.传参并获得响应

7.flag到手
NSSCTF{6efa78fd-455a-4e7e-8927-c9bb7330e328}
8.tips:
重生之我要成为web糕手:第一步:本题限时2分钟,且掌握源码中几个函数的使用方法
希望下次不要被出题人嘲讽了
