i春秋5

web——Zone

有个登录界面一开始让我们登录,试了一下不是sql注入,于是抓包查看,在cookie发现有个login=0,将其改成1,发现可以进入,打开manage页面,这里还是需要在burpsuit不断将login修改为1,最终即可进入,得到一个:

1
manages/admin.php?module=..././..././flag.php&name=

比较类似于文件包含的url,一开始是../,发现不论几个都是出来的结果都一样,怀疑被过滤了,于是复写,发现页面就不一样了,接下来的目标是打开这个flag.php
img

在刚刚整理的敏感位置中的
/etc/passwd中可以看到这个是Nginx系统

1
2
3
nginx:
/etc/nginx/nginx.conf
/etc/nginx/sites-enabled/default

在第一个配置文件中没有发现啥东西,在第二个配置文件中发现了一些网站目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
						server {
​ listen 80 default_server;
​ listen [::]:80 default_server ipv6only=on;

root /var/www/html;
index index.php index.html index.htm;

server_name localhost;

location / {
try_files $uri $uri/ =404;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}

location /online-movies {
alias /movie/;
autoindex on;
}

location ~ /\.ht {
deny all;
}

}

nginx服务器知识点

  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

所以在这里 由于它有/online-movies ,所以我们可以进行浏览目录下载文件,

http://c56bc9b5d3d94306b60d284c36ba4904d5a04f2c66114e60.changame.ichunqiu.com/online-movies../var/www/html/flag.php
访问一下URL 就可以下载得到flag.php

1
2
3
<?php 
$flag='flag{794b0e81-a517-4d4e-acf0-3d9086915a2d}';
echo 'flag_is_here';

web——hello world

这道题目有点熟悉:
img

有个role,解码后是f:5:"thrfg";
好像之前做过这题吧,rot13解密以后,改为admin再登录看看,发现考点不是在这里,看源码有个flag.xmas.js可以访问,删除xms后就可以访问了,然后是一堆看不懂的代码

img

然后看了一下wp,说是git源码泄露,因为可以看到js的源码,于是尝试用githack工具抓取

img 看了一下wp,说是应该抓取到两个flag.js,然后进行比对就可以得到flag,但是这题,只有一个???直接输入那个flag.js.04bb09也没有发现,大概没了吧?

web——phone number

一开始的登录界面推测是SQL注入
所以尝试了一波 没有收获,于是在注册界面入手,因为是phone number题目,所以在手机号的地方应该可能性很大,进行注入试试:
当我提交不是数字的时候,提示要为数字,将注入语句转为十六进制试试:
有字符限制,只能输入十一位——在审查元素那边更改一下限制试试
但是这题不论怎么注册都是dberror???看了下评论区也是,难道又炸了?????算了理解思路就好了

web——GetFlag

登录界面,看着像sql注入,于是尝试1’or 1=1# 密码随意,验证码用之前写过的脚本就行了

1
2
3
4
5
6
7
8
9
import hashlib
s='163e9e'
for i in range(1,99999999):
a=i
i=hashlib.md5(str(i).encode('utf-8')).hexdigest()
# print(i)
if i[0:6] == str(s):
print(a)
break

即可登录

img
1
2
3
4
a.php:
<?php
echo "Do what you want to do, web dog, flag is in the web root dir";
?>

点开源码:发现有个文件包含漏洞
img

但是没拿到真的,想起来上面的源码说flag 在网站根目录下,于是尝试
/var/www/html/flag.php、/var/www/html/challenges/flag.php、/var/www/html/challenges/file/flag.php都不行,于是去看了一下wp,说就是第二个路径,但是为啥打不开==,然后后面又说在flag.php页面,于是我直接访问flag.php,,发现根本就没这个页面???晕了==后来发现 原来c要大写…..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);//过滤了那些字符
if((strlen($f) > 13) || (false !== stripos($f, 'return')))//flag的长度不能大于13,也不能有return字符
{
die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
eval("\$spaceone = $f");
}
catch (Exception $e)
{
return false;
}
if ($spaceone === 'flag'){//将spaceone的值和flag作比较
echo file_get_contents("helloctf.php");
}

?>

eval函数特性

1
eval函数传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如 'echo "Hi!"' 会导致一个 parse error,而 'echo "Hi!";' 则会正常运行。

为什么之前我们写一句话木马的时候没有这样呢? 因为我们在前面加了个@
所以这里需要输入的是flag=flag;
然后点击源码,就可以看到flag了

img

web——中国象棋

1
2
3
4
5
6
7
<script src="js/common.js"></script> 
<script src="js/play.js"></script>
<script src="js/AI.js"></script>
<script src="js/bill.js"></script>
<script src="js/[abcmlyx]{2}ctf[0-9]{3}.js"></script>
<script src="js/gambit.js"></script>
<div style="text-align:center;clear:both">

这题又是只是盲区了,看了一下wp,说是js的正则表达式,

原来是这样,有一个js文件,文件名由abcmlyx的两个字母+ctf+0-9的三个数字组成,接下来就需要爆破了
直接用burp suit抓包 进行爆破
img

然后选择爆破模式:cluster bomb分别对其进行爆破即可,然后没爆破出来
发现 是我URL构造错了 应该是/js/xxxx.js!!!!!!!!!!!!!!

然后就可以拿到flag了
img

Author

vague huang

Posted on

2021-02-19

Updated on

2021-02-20

Licensed under

Comments