[SWPUCTF 2021 新生赛]jicao

题目链接:NSSCTF | 在线CTF平台

涉及工具:hackbar

解题思路:

1.打开靶场,代码审计:

审计代码:

①highlight_file('index.php');

 这行代码将会在网页上显示当前 PHP 文件(index.php)的源代码,以便于查看和调试。

②include("flag.php");

这行代码包含了一个名为 flag.php 的文件,里面可能包含着一些敏感信息,比如这个题目中的 flag。

③$id=$_POST['id'];

这行代码从 POST 请求中获取名为 id 的参数的值,并赋给变量 $id。④$json=json_decode($_GET['json'],true);

这行代码将 GET 请求中名为 json 的参数的值解析成 PHP 数组,并赋给变量 $json(JSON复制形式一般为字典)。

⑤if ($id=="wllmNB"&&$json['x']=="wllm")

{echo $flag;}

这个条件语句检查 $id 变量是否等于字符串 "wllmNB",以及 $json 数组中的键 'x' 是否等于字符串 "wllm"。如果条件满足,则输出变量 $flag 的值,可能是 flag.php 文件中的内容。

2.审计得知,只要用“post”方法请求获取‘id==“wllmNB”’,用“get”方法请求‘json[‘x’]==“wllm”’,即可获得flag:

3.知识总结:

①hackbar功能菜单从左到右,从上到下相应功能解说:

Encryption:集成了几种常用解密方式

Encoding:集成了几种常用解码方式

SQL:sql注入工具集成

XSS:xss跨脚本攻击工具集成

LFI:本地文件包含

XXE:外部实体注入(XXE漏洞)

Other:目前大概率用不到...

Load URL:将网址录入右边文本框进行操作

Split URL:目前大概率用不到...

Execute:提交请求

Post data:post传参

Referer:引用页

User Agent:可理解为浏览器身份证

Cookies:Cookies 通常用于模拟已登录状态,以测试网站的授权和身份验证机制

②http两种请求(传参)方式:post,get

GET 方法:

a.使用 URL 来传递参数,参数会附加在 URL 的末尾,以问号 ? (英文)开始,并使用 & 符号分隔多个参数。

b.参数会被显示在地址栏中,因此不适合传递敏感信息,比如密码等。

c.适用于向服务器请求数据,但不适合用于传输敏感数据或大量数据。

POST 方法:

a.参数会包含在请求的消息体中,而不是直接暴露在 URL 中。

b.可以传输大量数据,并且更安全,因为参数不会暴露在地址栏中。

c.适用于向服务器提交表单数据、上传文件等操作。

注:在 PHP 中,可以使用 $_GET 和 $_POST 超全局数组来获取 GET 和 POST 请求中的参数值,例如 $_GET['json']获取 GET 请求中名为 json 的参数值,$_POST['id'] 获取 POST 请求中名为 id 的参数值。

③json_decode 是一个 PHP 函数:

用于将 JSON 格式的字符串解码为 PHP 变量。它接受一个 JSON 格式的字符串作为参数,并返回对应的 PHP 变量。如果成功解码,json_decode 函数将返回与 JSON 字符串对应的 PHP 变量。这个 PHP 变量可以是一个关联数组、一个数字、一个字符串、一个布尔值、null 或者一个包含这些类型的混合类型的数组。如果解码失败,函数将返回 null。

json_decode 函数还可以接受第二个参数,用于指定返回值的数据类型。默认情况下,它返回一个关联数组。如果将第二个参数设置为 true,它将返回一个关联数组;如果设置为 false 或不指定,则返回一个对象。

示例:

$json_string = '{"name": "John", "age": 30, "city": "New York"}';

$array = json_decode($json_string, true);#解码 JSON 字符串并返回关联数组

print_r($array);

Array

(

    [name] => John

    [age] => 30

    [city] => New York

)

注:需要注意的是,json_decode 函数默认要求传入的 JSON 字符串是 UTF-8 编码的。如果传入的字符串不是 UTF-8 编码,可能会导致解码失败。

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值