首页 > 数据库 >sql注入基础

sql注入基础

时间:2023-08-14 19:33:59浏览次数:47  
标签:-- 基础 闭合 数字型 sql 查询 id 注入

什么是注入?

  通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,从而进一步得到相应的数据信息

通过构造一条精巧的语句,来查询到想要的信息

注入分类

按照查询字段分为:

字符型   当输入的参数为字符串时,称为字符型

数字型   当输入的参数为整形时,可以认为是数字型注入

 

按照注入方法  union注入,报错注入,布尔注入,时间注入,堆叠注入  

什么是注入点

注入点就是可以实行注入的地方,通常是一个访问数据库的连接

如本页面注入点input the ID

 

进入Less-1网址后面加上 ?id=1

 

注入点常在有人机交互的地方

如何判断是字符型注入还是数字型注入

  使用and 1=1 和and 1=2来判断

  数字型一般体检内容为数字,但数字不一定为数字型

  

  Less-1 提交and 1=1 和提交and 1=2 都能正常显示界面,则不可能是数字型注入,即为字符型注入

 

  Less-2 提交 and 1=2 条件无法满足,语句无法被数据库查询到,网页无法正常显示,判断为数字型注入

 

 数字型还可使用运算(减法)进行判断,等于的是运算后的结果,加号会被理解成空格

 

查看源文件中的源代码:

字符型需要闭合符,如图所示 ’   

    

  提交 1 and 1=1

    

   单引号闭合语句后where 语句为一个条件id=‘1 1 and 1=1’

 

数字型则不需要闭合符闭合

  

   提交 and 1=2

  

  数字型不需要闭合

闭合方式

     '        "        ')        ")       其他  

如何判断闭合方式

Less-1输入?id=1'"  报错为near 1"" 多了一个 ' 闭合符为 '

 

Less-3 输入id=1'''  报错为near 1'''') 多一个 ')  及闭合符号为 ') 

 

闭合的作用

手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句,查询需要的参数,不需要的语句可以使用注释符号 ‘--+’ 或 ‘#’ 或 ‘%23’ 或‘-- -’ 注释掉

    注释掉:利用注释符号暂时将程序脱离运行

    把某段程序 “注释掉” ,就是让它暂时不运行(而非删除掉)

union联合注入

需要先使用group by 或 order by 二分法判断默认页面数据列数量,group by不会被防火墙发现

?id=1' group by 3 -- -  正常

?id=1' group by 4 -- -  异常

判断有3列

提交  ?id=1' union select database() -- -      报错column数量错误

查询信息使用  

  ?id=1' union select 1,2,3 -- -   只会读取第一行

所以在浏览器中显示为:

  在phpmyadmin中的查询:

 

页面只能显示一个内容,第二句的内容是不回显的,可以将第一句的内容改为数据库不存在的数据,如id=0

 

要使第一行不存在,才会在页面显示第二行,所以使 id=-1' 后面不变

成功找到 回显位置(能够在页面体现出来)

所i以2和3都可以回显,在 ?id=1' union select 1,2,3 -- - 中将2或3替换成database()

即?id=1' union select 1,2,database() -- -

 

 

 查询基础步骤:

  1. 查找注入点
  2. 判断是字符型还是数字型注入 and 1=1 1=2 /3-1
  3. 如果字符型,找到它的闭合方式  '    ''   ')    '')
  4. 判断查询列数,group by    order by
  5. 查询回显位置,-1

 

标签:--,基础,闭合,数字型,sql,查询,id,注入
From: https://www.cnblogs.com/cheng-yicheng/p/17623015.html

相关文章

  • 引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionExceptio
    引入feign注入报错org.springframework.beans.factory.NoSuchBeanDefinitionException解决[172.16.22.215]out:Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'com.test.mydock.api.FeignRemoteTestService�......
  • JavaSE基础知识
    1.JavaSE基础知识1.数据类型1.1.基本类型1子节=8位1byte=8bit整数型类型占用字节范围byte1-128(-2^7)~127(2^7-1)short2-2^15~2^15-1int4-2^31~2^31-1long8-2^63~2^63-1浮点型类型占用字节float4double8......
  • Java基础实现加油站圈存机系统
    加油站圈存机系统​ 对于加油卡而言,圈存是将用户账户中已存入的资金划转到所持的加油卡上后方可使用。通俗一点的说法就是您在网点把钱存入主卡中,再分配到下面的副卡,由于副卡都在使用车辆的驾驶员手中,需要在加油的时候在加油站让加油站员工划一下即可,就是所谓的圈存。圈存操作流......
  • 盘点一个列表相加的Python基础题目
    大家好,我是皮皮。一、前言前几天在明佬的Python群【dq】问了一个Python列表基础处理的问题,一起来看看吧。下图是他的原始列表,想通过左边的列表,得到右边的合并列表。二、实现过程这里【流水线】和【hclw】大佬给了一个答案,如下图所示:如此顺利地解决了粉丝的问题。后来他自己也写了个......
  • 高频SQL 50题(基础版): 进店却未进行过交易的顾客 | 2023-08-14
    问题表:Visits+-------------+---------+|ColumnName|Type|+-------------+---------+|visit_id|int||customer_id|int|+-------------+---------+visit_id是该表中具有唯一值的列。该表包含有关光临过购物中心的顾客的信息。表:Transact......
  • 使用Navicate 登录SQL server时 报错 建立连接时出现与网络相关的或特定于实例的错误
    1.先查看是否允许远程连接:右键-属性-连接-允许远程连接到此服务器2.若不行的话,再检查SqlServer网络配置里面的SQLEXPRESS的协议-TCP/IP是否启用;3.启用TCP/IP协议之后,右键-属性-IP地址-找到本机ip-设置1433端口......
  • sql service行转列
    PIVOT的一般语法:SELECT[新表字段1,2,3…]FROM[原表名]AS[原表别名]PIVOT([聚合函数]([原表字段1])FOR[原表字段2]IN([原表2值1],[原表字段2值2]…))AS[新表别名]语法解释:1、PIVOT必须列举[原表字段2的值],列举的值必须用中括号[]包含起来,就算是字符串类型也不需......
  • JQuery&Ajax基础知识
    JQuery&Ajax基础知识1、Jquery简介Query是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由JohnResig发布。jQuery设计的宗旨是“writeLess,DoMore”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一......
  • MySQL数据库不可不学的一个数据库福利来了
    Spring常用注解redis视频集合,看完这些别说不会redis代码资料.zip代码资料解压密码:wosn.net第1章数据库简介-8-1[wosn.net].mp4第3章SQL语句规范-8-3[wosn.net].mp4第2章数据库的安装及配置-8-2.mp4第4章数据库的相关操作-8-4.mp4第10章测试字符串类型-8-10[wosn.net].mp4第11......
  • IT初学者在哪里可以发现一些好的基础视频呢?
     经常碰到一些粉丝说参加了某某培训机构的培训课程,什么都没写会,还白白打上了一两万块。想到这里挺为他们心痛的,我认为你如果是初学者,必然是没什么基础的;为了薪资高而学习IT行业,而没有浓厚的兴趣,很难在参加培训的脱产班3个月的时间内学习比较深入的东西。如果你是IT兴趣爱好者,而且......