二次注入CTF实战

进入靶机有一个发帖的功能,我们点击提交发现需要我们登录

这里可以用bp抓包进行暴力破解

进来发现我们干不了什么

用dirmap扫一下

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");
}
?>

找到他的一个源码

他首先需要一个登录这里我们已经登录了

发完贴他会直接跳回index.php

点击详情会看到这个文件

php 复制代码
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;

他会从数据库里把category拿出来

addslanshes这个会过滤掉会进行一个转译,但是进入mysql库里的时候转义字符会移除,所以出库的时候就没有了转义字符,所以我们这里可以进行二次注入在comment里

闭合情况下

php 复制代码
insert into comment
       set category = ' ',content=user(),/*',
           content = '*/#',
           bo_id = '$bo_id'";

这里需要多行注释

可以拿到数据了,后面就是修改payload

相关推荐
開_punk2558_發6 小时前
ZPSCAN - 综合且强大的信息收集工具,附下载链接
安全·web安全·网络安全·系统安全·安全威胁分析
魔都安全札记7 小时前
海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust
网络·安全·web安全·网络安全
白帽AxisX8 小时前
安全产品概述
安全
xiaojiesec8 小时前
第144天:内网安全-Linux权限维持&OpenSSH&PAM后门&SSH软链接&公私钥登录
linux·安全·ssh
数据安全小盾9 小时前
2024办公文件怎么加密?常用的8款加密软件排行榜
运维·服务器·网络·安全·web安全
联蔚盘云9 小时前
Lianwei 安全周报|2024.09.09
安全
SheldonChang10 小时前
数据传输安全——混合加解密
java·网络·安全
常敲代码手不生10 小时前
开放API接口时要注意的安全处理总结
java·安全·非对称加密·md5·令牌
永乐春秋11 小时前
WEB攻防-ASP安全&MDB下载植入&IIS短文件名&写权限&解析
前端·安全
jmoych11 小时前
解码数字化转型顶层规划(附236页PPT:xx企业数字化转型项目顶层规划方案)
安全·华为·制造