一道CTF题引发的思考——SSI注入
题目地址:http://210.32.4.22/index.php
一开始我一直考虑的用<!--#include file="文件"-->的格式进行读取文件,但是一直不成功,后来赛后看了各位师傅的writeup,有师傅跟我说了这两个命令的区别,一个是虚拟目录,一个是相对目录,下面是我后来百度上提问,有师傅告诉我的,权当走过的坑吧。
1.#include file 包含文件的相对路径,#include virtual包含文件的虚拟路径。
2.在同一个虚拟目录内,<!--#include
file="file.asp"-->和<!--#include
virtual="file.asp"-->效果是相同的,但假设虚拟目录名为myweb,则<!--#include
virtual="myweb/file.asp"-->也可以通过调试,但我们知道<!--#include
file="myweb/file.asp"-->是绝对要报错的。
3.如果一个站点下有2个虚拟目录myweb1和myweb2,myweb1下有文件file1.asp,myweb2下有文件file2.asp,如果file1.asp要调用file2.asp,那么在file1.asp中要这样写:<!--#include
virtual="myweb2/file2.asp"-->,在这种情况下用#include
file是无法实现的,用<!--#include
file="myweb2/file2.asp"-->必然报错。相反,在myweb2的文件中包含myweb1中的文件也是一样。如果该被包含文件在某个文件夹下面,只要在虚拟路径中加上该文件夹即可。
4.不论用#include file 还是 #include virtual,在路径中用“/”还是“\”或者二者交叉使用都不会影响编译效果,程序会顺利执行。
5.以上情况不适用于2个站点文件的相互调用,而且在同一个站点内,<!--#include
file="file.asp"-->和<!--#include
virtual="file.asp"-->等效,但假设站点名为website,使用<!--#include
virtual="website/file.asp"-->是错误的。
最新文章
- PyInstaller编译python3时使用的详细参数介绍
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
- 微软职位内部推荐-SR DEV
- JQuery实现回车代替Tab键(按回车跳到下一栏)
- sql多表删除
- Android 播放视频并获取指定时间的帧画面
- Web前端浏览器兼容初探
- shape及其子节点详解
- ★浅谈Spanking情节
- python写一个邮箱伪造脚本
- MYSQL数据库学习十三 使用MySQL常用函数
- Unknown entity: org.jbpm.services.task.audit.TaskEventImpl
- EF CodeFirst系列(9)---添加初始化数据和数据库迁移策略
- elasticsearch数据备份与sshfs建立共享文件
- Ubuntu-Tweak 安装
- hadoop:如何运行自带wordcount
- DB2<;RedHed Linux>; 创建数据库
- arm trustzone
- windows工具打开命令
- 编译源码 JAVA out of memory