当前位置: 首页 > news >正文

BUUCTF--[ACTF2020 新生赛]Include

目录

1、本题详解

2、延伸拓展


1、本题详解

访问题目链接 

有一个tips的链接,我们点击

请求了file,内容是flag.php的内容:Can you find out the flag?

尝试请求一下index.php

并没有发现什么信息

flag.php也没发现什么

尝试爆破一下它的目录和一些敏感文件名

但是遇到429报错,请求被服务器拒绝,因为发送了太多请求 

想起题目名叫Include,应该考察的是文件包含,因此尝试使用伪协议进行文件读取

首先使用 php://filter(用于读取源码)

这里直接尝试读取当前目录下的flag.php

进行base64编码输出,构造payload:

?file=php://filter/read=convert.base64-encode/resource=flag.php

读取成功

进行base64解码

拿到 flag{f88d4b88-a1d0-4245-9c11-69da16affdac}

2、延伸拓展

关于php://filter的用法:

php://filter/read=convert.base64-encode/resource=[文件名]

读取文件源码(针对php文件需要base64编码)

当然有时候会对编码进行过滤和限制,这时我们就需要使用一些其他的编码方式

比如使用utf8和utf16

/?file=php://filter/convert.iconv.utf8.utf16/resource=flag.php

读取出来的内容就不需要解base64了

这里说一下这个iconv函数:完成各种字符集间的转换

比如 iconv("utf8","gbk",$string) :将字符串string 编码由utf8转变成gbk

以及convert.iconv.的用法:

convert.iconv.<input-encoding>.<output-encoding>
或者
convert.iconv.<input-encoding>/<output-encoding>

<input-encoding>和<output-encoding> 就是编码方式

常用的编码方式有:

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*

比如我们的payload还可以是:

?file=php://filter//convert.iconv.SJIS*.UCS-4*/resource=flag.php

但是这种编码读取php文件似乎不行,不过我们可以读其他的,比如etc下的passwd

?file=php://filter//convert.iconv.SJIS*.UCS-4*/resource=/etc/passwd

尝试使用 php://input (用于执行PHP代码)进行代码执行:

回显 hacker!

应该是被检测了,我们读取一下index.php的源码看看

/?file=php://filter/convert.iconv.utf8.utf16/resource=index.php

确实过滤掉了很多伪协议,但是 php://filter 是可以使用的,这也是为什么我们能读取到flag.php

相关文章:

  • 华为无线ac+fit三层组网,每个ap发射不同的业务vlan
  • 【JavaEE】操作系统与进程
  • 【广州华锐互动】VR防溺水安全内容体验提高群众防溺水意识
  • 嵌入式基础知识学习:Flash、EEPROM、RAM、ROM
  • SpringBoot整合Redis,redis连接池和RedisTemplate序列化
  • Java 最简单的实现 AES 加密和解密
  • Spring-IOC-FactoryBean机制(难点且重点)
  • Java面试题07
  • 重磅!TikTok Shop将以新方式重启印尼业务
  • 前端学习--React(1)
  • 小红书干货类笔记怎么写?建议收藏
  • Maven聚合项目发布至私服指定模块
  • 设计模式(二)-创建者模式(3)-抽象工厂模式
  • 使用Python解析CAN总线
  • 【华为OD题库-030】阿里巴巴找黄金宝箱(V)-java
  • php的引用
  • 10个确保微服务与容器安全的最佳实践
  • DOM的那些事
  • leetcode-27. Remove Element
  • mac修复ab及siege安装
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud Feign的两种使用姿势
  • SpringCloud集成分布式事务LCN (一)
  • uni-app项目数字滚动
  • 百度小程序遇到的问题
  • 笨办法学C 练习34:动态数组
  • 服务器之间,相同帐号,实现免密钥登录
  • 给初学者:JavaScript 中数组操作注意点
  • 简单易用的leetcode开发测试工具(npm)
  • 日剧·日综资源集合(建议收藏)
  • 如何利用MongoDB打造TOP榜小程序
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 怎么把视频里的音乐提取出来
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 你对linux中grep命令知道多少?
  • 《码出高效》学习笔记与书中错误记录
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​2020 年大前端技术趋势解读
  • ​iOS实时查看App运行日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (3)STL算法之搜索
  • (4)(4.6) Triducer
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (LeetCode C++)盛最多水的容器
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • 、写入Shellcode到注册表上线
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net Redis的秒杀Dome和异步执行
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET轻量级ORM组件Dapper葵花宝典