首页 > 数据库 >Web安全-初识SQL注入(一)

Web安全-初识SQL注入(一)

时间:2023-12-03 10:46:09浏览次数:50  
标签:Web 数据库 查询 初识 猜解 SQL 数据 注入

1、初识SQL注入

1.1、什么是注入?

将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。

注入能导致数据丢失、 破坏或泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机完全被接管。 注入攻击的本质:就是把用户输入的数据当做代码执行。(过于信任用户)

1.2、什么是SQL注入?

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的入侵行为。

(图片来源网络)

1.3、SQL注入产生的原因

随着B/S模式被广泛的应用,由于没有对用户的输入数据或者是页面中所携带的信息进行的合法性校验,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些Ta想得到的数据。被称为数据库的注入攻击(SQL注入攻击)。

也就是数据与代码未严格分离;用户提交的参数数据未做充分检查过滤就被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。

1.4、SQL注入的危害

包括但不局限于:

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  • 破坏硬盘数据,瘫痪全系统。
  • 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。

1.5、SQL注入在渗透中的利用

  • 绕过登录验证:使用万能密码登录网站后台等。
  • 获取敏感数据:获取网站管理员帐号、密码等。
  • 文件系统操作:列目录,读取、写入文件等。
  • 注册表操作:读取、写入、删除注册表等。
  • 执行系统命令:远程执行命令。

2、如何挖掘SQL注入

2.1、常见SQL注入流程

2.2、SQL注入漏洞分类

2.2.1、按数据类型

可分为:数字型(Integer)和字符型(String)

2.2.2、按返回结果

可分为:显错注入(Error-Based)和盲注(Boolean/Time-Based Blind)

2.3、可能存在SQL注入的地方

  • 最普遍的注入漏洞是由于参数值过滤不严导致的。
  • Cookie注入漏洞普遍存在于ASP的程序中。
  • 参数名、目录名、文件名等注入漏洞通常存在于有网站路由的程序中。

2.4、SQL注入测试思路

步骤 盲注 联合查询注入
1 判断是否存在注入,注入是字符型还是数字型 判断是否存在注入,注入是字符型还是数字型
2 猜解当前数据库名 猜解SQL查询语句中的字段数
3 猜解数据库中的表名 确定显示的字段顺序
4 猜解表中的字段名 获取当前数据库
5 猜解数据 获取数据库中的表

2.4.1、判断是否存在SQL注入

(图片来源网络)

3、总结与题外话

本文先简单介绍SQL注入,后续会还详细介绍SQL注入一些POC、思路和靶场实验。《跟我学网安知识》系列我停更了2周多了共16天,原因有多方面,一方面我自己学网安课作业和靶场实验比较花费时间,另一方面我工作上有变动,在准备面试Java相关知识。

打个小小求职广告:Base厦门,Java高级开发,我擅长需求分析和较强的文档能力,有跨部门推动项目从0到1交付上线的经验,也有架构相关工作经历。如果有合适的岗位推荐请私信给我,非常感谢。

标签:Web,数据库,查询,初识,猜解,SQL,数据,注入
From: https://www.cnblogs.com/huangxiufen/p/17872661.html

相关文章

  • docker 安装mysql 8.0.26
    sudodockerpullmysql:8.0.26创建数据目录和配置文件:在你的宿主机上创建一个目录来存放MySQL的配置文件和数据。你还需要为这个目录设置适当的权限1:sudomkdir-p/data/mysql8.0/conf/data/mysql8.0/data/data/mysql8.0/logssudochmod-R755/data/mysql8.0/conf/data/......
  • 【?】Web_BUUCTF_WriteUp | [GXYCTF2019]Ping Ping Ping
    题目分析ping一个任意ip:拼一个命令试试:看来是命令执行漏洞,直接查看flag.php,发现存在空格过滤:尝试绕过空格过滤:还有{}符号过滤。过滤了flag关键字,尝试绕过:过滤了单双引号。\符号、\$+数字、\$+@没有用。变量拼接没有输出。看看index.php:......
  • Hadoop集群部署后相关WEB界面打不开大概原因
    集群部署完毕后,查看相关WEB界面,打不开的原因可能如下:1、可以先去检查LINUX(CentOS7)机器的防火墙是否关闭,命令如下:systemctlstatusfirewalld.service(查看防火墙状态)(如果显示为关闭状态,则进行下一步;如果显示尚未关闭,则进行关闭并设定开机如下所示)systemctlstopfirewalld......
  • 使用JookDB将Oracle数据库迁移到Mysql
    JookDB是多平台的数据库开发管理工具,如Sql输入提示、导入导出、表设计、数据编辑等功能强大,而且是C++开发的界面非常丝滑流畅。可以免费支持Oracle、Mysql、SqlServer数据库管理。要通过JookDB将Oracle数据库迁移到Mysql需要先添加连接到这两个数据库的数据源。选择菜单【文件/新建......
  • MSSQL修改DBO
    DECLARE@NAMESYSNAME--表名变量DECLARECSRCURSOR--定义一个游标FORSELECTNAMEFROMSYSOBJECTSWHEREXTYPE='U'--在系统表SYSOBJECTS中取[XTYPE='U'],即取用户表的表名 OPENCSR DECLARE@SCHEMATABLEVARCHAR(200)--定义一个字符串存放执行语句 FET......
  • Java连接MySQL数据库(maven构建)
    构建方式:Java+MySql+Maven1.创建项目2.导入依赖选择目录中的pom.xml文件,导入mysql连接驱动依赖注意这里版本使用的是MySql8.0,MySql在8.0版本有较大改动<dependencies><dependency><groupId>mysql</groupId><ar......
  • PostgreSQL - ERROR: deadlock detected
    ERROR:deadlockdetectedDETAIL:Process209waitsforShareLockontransaction1034;blockedbyprocess201.Process201waitsforShareLockontransaction1035;blockedbyprocess209.HINT:Seeserverlogforquerydetails.CONTEXT:whilelockingtuple......
  • Web漏洞-XSS绕过和pikachu靶场4个场景(三)
    ★★实战前置声明★★文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。1、XSS漏洞挖掘与绕过1.1、XSS漏洞挖掘数据交互(输入/输出)的地方最容易产生跨站脚本,最重要的是考......
  • PostgreSQL - Check blocking SQL statements
    pg_locksviewLookingat pg_locks showsyouwhatlocksaregrantedandwhatprocessesarewaitingforlockstobeacquired.Agoodquerytostartlookingforlockproblems:selectrelation::regclass,*frompg_lockswherenotgranted;pg_stat_activit......
  • C#连接mysql
    本文章是建立在已经安装MySQL数据库的前提,默认安装在C:\ProgramFiles(x86)\MySQL,建议在安装时选中Connector.NET6.9的安装,里面有MySQL与C#连接的动态链接库。帮助文档C:\ProgramFiles(x86)\MySQL\Connector.NET6.9\Documentation\ConnectorNET.chm是我撰写此文章的主......