Web安全攻防世界01 fileinclude(宜兴网信办)

复制代码
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
//规定 HTML 文档的字符集
 
<br />
<b>Notice</b>:  Undefined index: language in <b>/var/www/html/index.php</b> on line <b>9</b><br />
Please choose the language you want : English or Chinese
<h1>Hi,EveryOne,The flag is in flag.php</h1><html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
//页面显示内容,其中提示了language的设置与地址,flag所在地址。
 
<?php
if( !ini_get('display_errors') ) { //如果 环境变量未设置错误回显
  ini_set('display_errors', 'On'); //则 开启错误信息回显
  }
error_reporting(E_ALL); //报告所有类型的错误
$lan = $_COOKIE['language']; //将cookie中['language']的值赋予lan
if(!$lan) //如果变量 lan为0
{
	@setcookie("language","english"); //向客户端发送cookie(名称为"language",值为"english")
	@include("english.php"); //文件包含(调用文件"english.php")
}
else //若不满足上述条件
{
	@include($lan.".php"); //文件包含(调用变量$lan,添加后缀".php")
}
$x=file_get_contents('index.php'); //将文件 index.php的内容读入变量 x中
echo $x; //输出 变量x的值
?>
</html></html>

所以题目的关键在于达成这第15行的条件:

lan = _COOKIE['language'];

在cookie中的内容language 会被传到变量lan,继而在第23行@include(lan.".php");被调用与执行,因此cookie变量中很适合写入读取flag.php的payload~

2)采用chrome的扩展工具hackbar 添加cookie的值;解题的思路与上面是一致的:F12调出开发者工具,操作步骤如下图就可以~

Name:cookie

Value:language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag(不懂

根据提供的Value,它使用了一种特殊的编码方式,即base64编码。在这个设置中,它将文件/var/www/html/flag进行了base64编码,并将编码后的结果作为cookie的值。

相关推荐
FLEMMINGS10 小时前
当 Android Studio 模拟器提示emulator failed to connect within 5 minutes
android·ide·android studio
鹏程十八少10 小时前
6. Android Shadow与众不同?一文解决插件化四大核心难题:ClassLoader冲突、Activity代理、资源隔离、动态更新(源码分析上)
android·前端·面试
谪星·阿凯10 小时前
文件上传漏洞进阶实战博客
web安全
不会写DN10 小时前
PHP mysqli 实用开发指南
android·开发语言·php
studyForMokey10 小时前
【Android面试】Handler专题
android·java·面试
芯盾时代10 小时前
高校信息化网络安全需求分析
网络·安全·web安全
Amctwd10 小时前
【Android】将 html 打包为 apk
android·html·harmonyos
不会写DN10 小时前
PHP 引入 PHP
android·php·android studio
桌面运维家10 小时前
Windows 10 USB安全:恶意设备识别与访问控制详解
windows·单片机·安全
bitbrowser10 小时前
2026年浏览器自动化(RPA)技术
安全·自动化·rpa