[NCTF2019]Fake XML cookbook

随便登录抓包之后看到这个
想着应该是改这个,但是怎么改?

这里就要使用到xml
<?xml version="1.0" ?>  | 
拿到flag
解读一下,就是在这里定义file为后面的字符串且会被当做变量执行
所以这里的$file等于flag
下面介绍一下xml注入:
XML是一种数据组织存储的数据结构方式,安全的XML在用户输入生成新的数据时候应该只能允许用户接受的数据,需要过滤掉一些可以改变XML标签也就是说改变XML结构插入新功能(例如新的账户信息,等于添加了账户)的特殊输入,如果没有过滤,则可以导致XML注入攻击。
XML注入前提条件
(1)用户能够控制数据的输入
(2)程序有拼凑的数据
XML基本格式与基本语法
基本格式:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!--xml文件的声明-->  | 
简单介绍一下DTD实体
按实体使用方式分类,实体分为内部声明实体和引用外部实体
内部实体
<!ENTITY 实体名称 "实体的值">  | 
内部实体示例代码:
<?xml version = "1.0" encoding = "utf-8"?>  | 
外部实体
外部实体,用来引入外部资源。有SYSTEM和PUBLIC两个关键字,表示实体来自本地计算机还是公共计算机。
<!ENTITY 实体名称 SYSTEM "URI/URL">  | 
参数实体+外部实体示例代码:
<?xml version="1.0" encoding="utf-8"?>  | 
%file(参数实体)是在DTD中被引用的,而&file;是在xml文档中被引用的。