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的值。

相关推荐
伩仁5 分钟前
你的"地址栏"是画出来的:一次 Steam 盗号事件的完整技术复盘
安全
hasty6 分钟前
一条 PATH 怎样让依赖包接管构建命令:pnpm 12.4.2 安全更新
安全·安全威胁分析
Raas1009 分钟前
AI网关支持OpenAI吗?MAI Gateway(魔芋企业级AI网关)实战能力深度解读
网关·安全·大模型·ai网关·mai gateway·魔芋·企业级产品
Acrellea24 分钟前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
又见情义1 小时前
RK3568 Android 13 屏蔽 healthd 电池日志经验分享
android
迪康coolmu2 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
古法安卓4 小时前
Android-Fork 机制详解
android·java·android studio
yu_zhidun4 小时前
终端安全EDR项目落地踩坑与能力补全实战
安全·数据安全·edr·域智盾软件
ynchyong4 小时前
为自己科普DTLS
安全·数据传输
Android打工仔5 小时前
不要在 Data 层随意把 Cold Flow 转换成 Hot Flow
android·架构·kotlin