当前位置: 首页 > news >正文

【WEB】Polar靶场 16-20题 详细笔记

目录

十六.签到题

十七.签到

十九.Don't touch me

二十.robots

robots.txt 


十六.签到题

didi=no改成didi=yes 

得到一串字符串

Li9kYXRhL2luZGV4LnBocA

base64在线解码网站解码得到./data/index.php

访问/data/index.php得到

 /data/index.php?file=php://filter/convert.base64-encode/resource=..././..././..././..././flag

base64解码

flag{92eb5ffee6ae2fec3ad71c777531578f}

十七.签到

发现有个按钮按不了

F12(右键点击检查),把disabled="disabled" 删除,回车

随便提交个东西试试

这时候弹出一个弹窗告诉我们提交 ilovejljcxy 就能得到flag了
但是提交的时候发现只能输入就个字母

查看源代码

 长度限制maxlength="9" 对用户的输入进行了限制,用户最多只能输入 9 个字符

把9改成11以上就行

输入后再次提交,弹出flag

flag{fa3f77dd58a0a8f990bb6292da75618f}

十八.session文件包含

我觉得这题老难了 

先随便输入一个,然后submit看看

先看知识点

PHP 伪协议(PHP Stream Wrappers)

是 PHP 提供的一组特殊协议前缀,允许通过类似 URL 的方式访问和操作不同类型的资源(如文件、数据流、网络等)。它们无需额外安装,直接内置于 PHP 中,常用于简化对非传统文件系统的操作。

 

示例:使用 php://filter 读取文件并编码

假设我们有一个文件 secrets.txt,内容如下:

# secrets.txt
数据库密码:123456
API 密钥:abcdefghijklmnopqrstuvwxyz

需求:读取该文件内容,并以 Base64 编码形式输出。

方法 1:传统方式(需手动编码)

<?php
// 读取文件内容
$content = file_get_contents('secrets.txt');
// 手动 Base64 编码
$encoded = base64_encode($content);
echo $encoded;
?>

方法 2:使用伪协议(自动编码)

<?php
// 使用 php://filter 伪协议直接获取编码后的内容
$encoded = file_get_contents('php://filter/convert.base64-encode/resource=secrets.txt');
echo $encoded;
?>

解码验证

将上述 Base64 字符串复制到 Base64 解码器,得到原始内容:

# secrets.txt数据库密码:123456
API 密钥:abcdefghijklmnopqrstuvwxyz

为什么要用base64加密再解密嘞?

看下面知识点:


base64加解密获取源代码

php://filter/convert.base64-encode/resource=目标文件路径


在利用 PHP 伪协议读取文件时,使用 Base64 编码而非直接读取的主要原因是绕过 PHP 解释器对代码的执行,并确保文件内容完整传输。

以下是详细示例:

1. 直接读取的问题:PHP 会执行代码

假设 action.php 包含以下内容:

<?php
// action.php
echo "Hello from PHP!";
$password = "secret123";
?>

如果直接通过文件包含漏洞读取(例如 ?file=action.php),PHP 解释器会执行代码而非返回源码:

  • 输出结果Hello from PHP!
  • 源码丢失$password = "secret123"; 等代码不会显示,攻击者无法获取敏感信息。

2. Base64 编码的作用:获取完整源码

使用 php://filter/convert.base64-encode 后:

  • 输出结果
    PD9waHANCg8Ly8gYWN0aW9uLnBocA0KZWNobyAiSGVsbG8gZnJvbSBIUEgiOw0KJHBhc3N3b3JkID0gInNlY3JldDEyMyI7DQo/Pg==
    
  • 解码后
    <?php
    // action.php
    echo "Hello from PHP!";
    $password = "secret123";
    ?>
    

核心原理
Base64 编码将 PHP 代码(如 <?php ... ?>)转换为纯文本字符串,PHP 解释器会将其视为普通文本而非可执行代码,从而完整保留源码内容。

 使用我们用php伪协议查看action.php的源代码

访问  /action.php?file=php://filter/convert.base64-encode/resource=action.php

得到源码


PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCiRuYW1lID0gJF9QT1NUWyduYW1lJ107DQppZigkbmFtZSl7DQoJJF9TRVNTSU9OWyJ1c2VybmFtZSJdID0gJG5hbWU7DQp9DQppbmNsdWRlKCRfR0VUWydmaWxlJ10pOw0KPz4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWw+DQo8aGVhZD4NCjwvaGVhZD4NCjxib2R5Pg0KPGEgaHJlZj1hY3Rpb24ucGhwP2ZpbGU9MS50eHQ+bXkgZGFpcnk8L2E+DQo8YSBocmVmPWFjdGlvbi5waHA/ZmlsZT0yLnR4dD5teSBib29rbGlzdDwvYT4NCjwvYm9keT4NCjwvaHRtbD4=

Base64 编码/解码 - 锤子在线工具解码查看源代码

<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>

开始分析源代码

 

 

 

十九.Don't touch me

这题也很简单

方法一:
F12(右键查看源码)可以看到:

访问/2.php

可以看到这有个按钮,却点不了

F12(右键检查),把disabled="disabled"都删了,回车,点击按钮

可以看到最后有fla.php,访问/fla.php,得到flag

方法二:

直接用目录扫描工具扫出来

flag{0cee5a97f12b172ceeea2e9f67b7413e}


二十.robots

这题非常简单 

robots.txt 

是一个位于网站根目录下的纯文本文件,用于告诉搜索引擎爬虫(如 Googlebot、百度蜘蛛等)哪些页面可以抓取,哪些页面不应该抓取,是网站与搜索引擎之间的 “协议”。

直接访问/robots.txt就行

发现有个文件/fl0g.php,访问得到flag

flag{2f37589152daf6f111b232ef4aea1304}

 Day6:

今天练了一个靶机,对于我这个新手小白来说还是挺难的,看讲解视频都看了老半天

累了......还有一题明天再写

http://www.xdnf.cn/news/1088065.html

相关文章:

  • navicat导出数据库的表结构
  • 数据库版本自动管理
  • 订单初版—分布式订单系统的简要设计文档
  • Centos和麒麟系统如何每天晚上2点10分定时备份达梦数据库
  • JAVAEE 代理
  • 3D 演示动画在汽车培训与教育领域中的应用
  • Modbus TCP转Profinet网关实现视觉相机与西门子PLC配置实例研究
  • Anolis OS 23 架构支持家族新成员:Anolis OS 23.3 版本及 RISC-V 预览版发布
  • 面试题--系统如何处理异常
  • SpringAI学习笔记-MCP服务器简单示例
  • 【UE5】虚幻引擎小百科
  • 后台设计指南:系统架构、交互规范与工具实战全流程解析
  • (C++)list列表相关基础用法(C++教程)(STL库基础教程)
  • Android T startingwindow使用总结
  • 深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信
  • 容器技术技术入门与 Docker 环境部署
  • Flutter基础(前端教程④-组件拼接)
  • Python Web应用开发之Flask框架高级应用(三)——蓝图(Blueprints)
  • uniapp b树
  • 【LeetCode 热题 100】142. 环形链表 II——快慢指针
  • FairyGUI 实现 Boss 双层血条动画
  • Crazyflie无人机集群控制笔记(二)通过SDK实时对接Crazyswarm2及NOKOV度量动捕数据
  • jmeter 性能测试步骤是什么?
  • 代码详细注释:C语言实现控制台用户注册登录系统
  • C++进阶—二叉树进阶
  • [2025CVPR]SGC-Net:开放词汇人机交互检测的分层粒度比较网络解析
  • 【网络协议安全】任务14:路由器DHCP_AAA_TELNET配置
  • Redis基础数据结构
  • Serverless 数据库来了?无服务器数据库 vs 传统数据库有何不同?
  • 学习日记-spring-day43-7.8