【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:
今天练了一个靶机,对于我这个新手小白来说还是挺难的,看讲解视频都看了老半天
累了......还有一题明天再写