sql注入 学习笔记

article/2025/10/11 3:59:59

学习来源视频:https://www.bilibili.com/video/BV1HT411E7bH?p=1&vd_source=91ac068ef47e260a09856e8db81907c9

什么是sql注入

sql注入又称sql injection,通过网页或者网络指令的方式修改原本的sql指令,从而从数据库中查询的敏感的信息。

sql注入的本质就是动态sql语句拼接,通过修改传入的参数从而修改拼接的结果。

sql 基础

数据库介绍

  • information_schema 数据信息库,里面存放了数据库名称、表名称、字段等信息
    • SCHEMATA表 存储了所有的数据库信息
    • TABLES表 存放了所有表的信息
    • COLUMNS表 描述了每一个表的每一列的信息。
  • mysql 用户信息、用户权限等
  • performance_schema 内存数据库,速度快。
  • sys 系统库 查询一些数据库的使用情况,如用户登录的ip、表使用的频率等。

指令介绍

show为展示,展示数据库为 show database,查表show tables from information_schema

在这里插入图片描述

-- # 为注释,sql injection 的时候需要将原本的语句修改掉,之后拼接自己的语句。

使用数据库 use,比如使用information_schema指令为:use information_schema

展示为 select,select除了查询也可以跟函数:

  • Now() 当前时间

在这里插入图片描述

  • database() 当前数据库

在这里插入图片描述

  • version() 当前数据库版本
  • user()当前用户

在这里插入图片描述

  • @@datadir 查询数据存放地

在这里插入图片描述

  • @@version_compile_os 查看安装的系统

在这里插入图片描述

查询表字段

  • 建立数据库create database test charset utf8mb4;

  • 创建一张表create table t1 (id int);

CREATE TABLE t1 (id INT ,user_name VARCHAR(32)) ;

  • 修改字段 alter table t1 add name varchar(32);

  • 查询information_schema的信息。

USE information_schema;
SHOW TABLES ;
-- 先查数据库 
SELECT * FROM schemata;
得到数据库名称test
-- 再查这个库中有哪些表
SELECT * FROM TABLES ;

这时候可以看到所有的数据库和表

在这里插入图片描述

加数据库条件

SELECT * FROM TABLES WHERE TABLE_SCHEMA = 'test';

在这里插入图片描述

-- 查询这个表有些字段
SELECT * FROM COLUMNS WHERE table_name = 't1';

在这里插入图片描述

小结:通过information_schema的schemata获取数据库信息、tables获取表信息、通过columns获取字段信息,我们可以获取任意数据库、任意表的相关信息。

where的条件使用and或者or连接,对于sql注入需要用or 常数=常数的方式将where条件中断掉。


union的使用

通过union判断查询了多少的列

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

group_concat(列名)可以将这个列的元素拼接起来。

sql注入 – get方式

下图为网页查询的流程,通过网页输入查询条件,服务器将条件拼接起来,从而形成一条sql语句。因此可以通过修改查询的内容可以获取数据库信息。

在这里插入图片描述

通过特征化输入,影响拼接的数据库信息,修改拼接的数据库,从而获取其他信息

在这里插入图片描述

步骤:

  • 检查发送的请求类型等信息network,XHR中看到整体的请求形式。

在这里插入图片描述

  • 先判断数据库向外有多少字段 通过union select + 数字。
  • 开始查询数据库与对应的用户表从而获取核心用户信息。

是用wbapp作为靶场环境,练习get指令的sql注入。

在这里插入图片描述

先使用'判断是否可以注入,发现回显了sql错误,因此可以使用sql注入。现在需要先用union判断这条sql返回几个参数'union select 1,2,3,4,5 -- 最后发现select返回7个元素'union select 1,2,3,4,5,6,7 --

在这里插入图片描述

回显了2,3,5,4,通过替换2为database()函数'union select 1,database(),3,4,5,6,7 -- ,当前库为bWapp,通过information_shema库找到当前bWapp有哪些表。

在这里插入图片描述

dsds'union select 1,table_name,3,4,5,6,7 from information_schema.TABLES where table_schema = 'bWAPP' -- 可知,有以下五个表,其中user表预判断是与用户有关的,检察一下其中字段。字段在columns表中。

在这里插入图片描述

dsds'union select 1,column_name,3,4,5,6,7 from information_schema.COLUMNS where table_schema = 'bWAPP' and table_name = 'users'-- 获取到表的内容为一下字段

在这里插入图片描述

在通过查询相关的字段就可以得到数据库的数据了。dsds'union select 1,login,3,4,password,6,7 from users --

在这里插入图片描述

sql注入 – post方法

由于post不能通过地址栏输入,因此此采用postman的方式出入指令。

注意登录后需要截取cookie

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

在preview可以看到网页的样子。

由于post的方式将参数放在请求体中,因此通过payload可以看到相关的参数,movie和action。

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

通过观察发现,movie是一个int型的参数,因此需要使用'是语句闭合。加入-- 的方式发现依然可以显示结果,又通过union语句发现存在sql注入的可能性。

在这里插入图片描述

当union跟7个参数时,可以正常显示结果,但是依然只有一条数据,判断此时采用limit的方式限制的返回结果集。由于查询的是moive的title,可以假设只存在一个相同的名字的电影,因此我们可以用Oder by进行排序,可以采用limit的方式显示后面的信息。

在这里插入图片描述
在这里插入图片描述
由于获取信息的只有一条需要结合group_concat语句将一列的内容拼接成为一个整体。
在这里插入图片描述

以上的注入方式需要回显

sql注入 – 盲注

由于以上的展示都需要回显,当没有回显的时候需要采用盲注的方式。

使用场景:没有回显,甚至是否执行都不知道。

原理分析:通过输入制定原理获取网页的行为,如果一致则是存在sql注入。

布尔盲注 采用1=1这种永远成立的布尔类型进行盲注。

基于时间盲注

通过睡眠进行盲注and sleep(),如果沉睡则证明存在sql注入,如果不存在沉睡,说明and条件为空或者不存在sql注入。

例如数据库中只有4条数据,通过语句

select * from t1 where id = 1 and sleep(2)select * from t1 where id =11 and sleep(2)前者id=1可以找到数据,后者没有id为11的数据因此找不到数据。

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

因此可以得知,数据库中存在id为1,同时可以判断出存在sql注入的危险。

此外注入的也可以尝试使用substr(‘abcd’,2,2)表明截取字符串abcd从第2开始截取2个,结果为bc。mid与substr同理。

ps有些时候 substr会被禁止。此时积累一些常用的操作的函数如:ord left等函数

两者结合,采用select substr(database(),1,1) and sleep(1),sleep前如果成立,则网页会sleep会睡眠,因此可以判断出数据库的名称。当执行过慢可以采用尝试ASCII的的方式。

select ascii(“abc”)结果为a的ASCII。

在这里插入图片描述

通过编写脚本的方式,将重复的工作交给脚本完成,从而实现信息的检索。

选择bwapp中的时间盲注demoBlind - Time-Based,发现页面只有一个发送email的反应。

在这里插入图片描述

通过输入

Iron Man' and sleep(2)

发现响应时间为2s

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHHn6IFw-1664945333336)(C:\Users\42012\Desktop\笔记\sql注入.assets\image-20221004165439468.png)]

说明存在sql注入以及存在一个记录为Iron man,下来开始判断数据库的长度。

Iron Man' and length(database()) > 3 and sleep(2) -- 

输入sql发现请求时间只有30ms因此不对

在这里插入图片描述

最后通过尝试发现数据库长度为5,以下为sql语句

Iron Man' and length(database()) =5 and sleep(2) -- 

由于存在过多的注入的结果因此应该写脚本得到数据库信息。

通过脚本的方式拼接发送的字符串,

通过获取数据库长度->获取数据库名称(ASCII的方式)->获取数据库表的数量->每个表的名称->筛选有用的表->获取表的列并筛选那些有用->读取内容

tip:所有的代码应该根据对应的sql语句来编写。

sql注入 – user_agent

user_agent是request发送的请求,通过读取本机的发送指令的方式可以获取,即通过user_agent可以知道是那种上网方式,也可以知道是否是爬虫。

在这里插入图片描述

这里是用postman访问的结果

在这里插入图片描述

可以看到postman发送的信息和网页不同,这个就是由于user_agent。在postman请求头中修改user_agent就可以进行变化。

在这里插入图片描述

user_agent的逻辑问读取请求头内容,然后通过insert into指令将信息写入表中,因此应该是 insert into XX values(ip, user_agent),因此通过修改加入aaa', (select database())) # 发现可以注入sql。这就相当于一个有回显的sql注入了。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/hHN2KSaw.shtml

相关文章

Java 防止 SQL 注入工具类

2019独角兽企业重金招聘Python工程师标准>>> package cn.manmanda.api.util;import javax.servlet.http.HttpServletRequest;/*** 防止SQL注入工具类* author * date 2017/12/29 15:39*/ public class AntiSQLInjectionUtil {// public final static String regex …

java防止SQL注入

前言 这里常用的方法就不说了,#{}预编译不说,但是如果我们不得不用${}来传递参数,那就有点麻烦了,另外,一般我们会用到druid自带的sql注入过滤: 但是经过测试发现,这个方法并不能完全屏宾sql注…

Pangolin-最好的SQL注入工具

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 点击这里使用RSS订阅本Blog: <script type="text/javascript" src="…

sql注入工具--Sqlmap

Sqlmap是一款自动化sql注入的工具&#xff0c;其功能强大&#xff0c;支持多种数据库&#xff0c;包括mysql&#xff0c;sqlserver等主流的数据库&#xff0c;采用独特的sql注入方法来达到自动化注入扫描漏洞的目的。 1&#xff09;基于布尔的盲注&#xff08;Type:boolean-bas…

宁浩网sql注入工具_国产SQL注入漏洞测试工具 - 超级SQL注入工具(SSQLInjection)...

此工具为本人对C#、Socket及HTTP协议、SQL注入进行深入研究后&#xff0c;闲暇时间做的一款SQL注入工具。不说秒SQLMap&#xff0c;直接秒杀什么webcruiser、Safe3SI、pangolin、havij、DSQLTools、明小子等&#xff0c;今后可以扔掉这些过时的工具了。 简介超级SQL注入工具(SS…

SQL注入工具-----sqlmap

sqlmap中的一些常见的命令&#xff1a; -h,–help 显示基本的帮助信息并退出 -hh 显示高级帮助信息并退出 –version 显示程序版本信息并退出 -u 目标URL -m 后接一个txt文件&#xff0c;文件中是多个url&#xff0c;sqlmap会自动化的检测其中的所有url -r 可以将一个post请求…

SQL注入工具

众所周知&#xff0c;SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞。 BSQL Hacker 10个SQL注入工具 BSQL Hacker是由Portcullis实验室开发的&#xff0c;BSQL Hacke…

mysql sql注入工具下载_超级SQL注入工具【SSQLInjection】

简介&#xff1a; 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具&#xff0c;支持出现在HTTP协议任意位置的SQL注入&#xff0c;支持各种类型的SQL注入&#xff0c;支持HTTPS模式注入。 超级SQL注入工具 (已更新beta15) 超级SQL注入工具(SSQLInjection…

mysql sql注入工具下载_sql注入工具下载|超级SQL注入工具SSQLInjectionv1.0 正式版 附使用说明 - 极光下载站...

超级SQL注入工具正式版下载。超级SQL注入工具虽然有一定的历史了&#xff0c;但是超级SQL注入工具还是一样的强悍&#xff01;超级SQL注入工具适用于Web渗透的朋友&#xff01; 超级SQL注入工具简介&#xff1a; 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注…

SQLiDetector:一款功能强大的SQL注入漏洞检测工具

关于SQLiDetector SQLiDetector是一款功能强大的SQL注入漏洞检测工具&#xff0c;该工具支持BurpBouty配置文件&#xff0c;可以帮助广大研究人员通过发送多个请求&#xff08;包含14种Payload&#xff09;并检查不同数据库的152个正则表达式模式来检测基于错误的SQL注入漏洞。…

渗透测试 ( 6 ) --- SQL 注入神器 sqlmap

sqlmap 官网&#xff1a;http://sqlmap.org/ sqlmap文档地址&#xff1a;https://github.com/sqlmapproject/sqlmap/wiki/Usage sqlmap 使用 思维导图&#xff1a;http://download.csdn.net/detail/freeking101/9887831 黑帽与白帽都喜爱的十大SQL注入工具&#xff1a;http://…

10个SQL注入工具

众所周知&#xff0c;SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞。 BSQL Hacker BSQL Hacker是由Portcullis实验室开发的&#xff0c;BSQL Hacker 是一个SQL自动注入…

Web安全:SQL注入工具

SQL注入工具主要是针对Web服务器后台数据库的注入&#xff0c;其主要目的是获取数据库中的数据。以前常用的SQL注入工具有啊D注入工具及Domain&#xff08;明小子注入工具&#xff09;&#xff0c;现在常用的SQL注入工具有HackBar、SQLMap 、Pangolin、Havij、Safe3 SQL inject…

面试官:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位&#xff0c;在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉&#xff0c;我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此&#xff0c;css中的像素只是一个抽象的单位&#xff0c;在不同的设…

dpr(设备像素比)与 移动端适配

在上一篇文章中&#xff08;使用 rem 实现移动端的自适应布局&#xff09;&#xff0c;我们讲到 iphone6s 的屏幕宽度为 375px&#xff0c;我们拿到的视觉稿也是基于iphone6s 设计的&#xff0c;但是设计稿的宽度却是 750px&#xff0c;这是为什么呢&#xff1f; 原因就是 ipho…

新一代Web技术栈的演进:SSR/SSG/ISR/DPR都在做什么?

在开始阅读之前&#xff0c;先解释一下文章里用到的英文缩写&#xff1a; CSR&#xff1a;Client Side Rendering&#xff0c;客户端&#xff08;通常是浏览器&#xff09;渲染&#xff1b;SSR&#xff1a;Server Side Rendering&#xff0c;服务端渲染&#xff1b;SSG&#xf…

Dapr

环境&#xff1a; window10 docker desktop dotnet 5.0 一、安装 Dapr CLI 打开 Windows PowerShell 或 cmd &#xff0c;运行以下命令以安装 Dapr CLI&#xff0c;并添加安装路径到系统环境变量中。 powershell -Command "iwr -useb https://raw.githubusercontent.…

当我们在讨论设备像素比(device pixel ratio,dpr)的时候我们在讨论什么?

目录 0. 为什么要写这篇文章&#xff1f;1. 设备像素比的问题在哪里&#xff1f;1.1. 不同的论述导致不同的理解1.2. 设备独立像素与CSS像素1.3. 小结 2. 设备像素比 设备物理像素/CSS像素&#xff0c;真的正确吗&#xff1f;2.1. PC端验证2.2. 手机端验证2.3. 出了什么问题&a…

动态dp

以前学树型dp留下的题目&#xff0c;没有写&#xff0c;然后过了几个月后又回来写了这道题 战略游戏 这是一道典型的最小点覆盖的模板&#xff0c;蒟蒻采用的是树型dp的做法 设 \(f[i][0/1]\) 在以 \(i\) 为根的子树中&#xff0c;选或不选当前这个点所需要的最少的点 那么转移…

移动端适配dpr

1. 移动端适配的代码&#xff08;设计稿iPhone6&#xff09;如下&#xff1a; (function (doc,win) {// seMetaTagScale(doc, win)var fn function () { var deviceWidth doc.documentElement.clientWidth; // css逻辑像素&#xff0c;不是物理像素if (deviceWidth > 82…