pikachu靶场--SQL inject--数字型(post)/字符型(get)/搜索型/xx型注入【4.1】~【4.4】

2023-11-04

目录

一:概述

 二:数字型注入(post)

三:字符型注入 (get)

四:搜索型注入 (以搜索k为例)

五:xx型注入 



一:概述

     在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

正常输入:当我们输入查询参数时,后台的运行代码一般为select email from email where……这类的

非法输入(攻击者的输入)1 or 1=1,如果没有对输入的参数进行安全检验,或者有相关的安全措施的话,就会导致攻击者输入的一整段被完整地拼接到SQL语句中,变成了 select email from users where id=1 or 1=1,这是一个可以被正常执行的SQL语句,但是执行效果与select email from users where id=1是截然不同的,它会遍历所有。

SQL inject漏洞攻击流程


 二:数字型注入(post)

        首先,打开我们的mysql数据库,use pikachu,然后对表“member”做查询,可以看到当参数为“1”和“1 or 1=1”时,所查询到的结果时大不相同的。

当参数为“1 or 1=1”而非“1”时,我们将会看到所有人的相关信息,造成信息泄露,这便是SQL inject漏洞。 

用bp演示如下:

将抓到的包发送到“repeater”模块,当id=1时,查询结果为:

当id=1 or 1= 1时,查询结果为:


三:字符型注入 (get)

当我们输入字符的时候,正常情况下,后台会给输入的字符+单引号,把他作为一个整个的字符串来处理,所以我们如果输入的是kobe or 1 = 1,传到后台的时候,or 1 = 1就不会起作用了,因此我们要构造闭合,输入kobe’ or 1 = 1#(#用--替换也可以,都是有着注释的意思,把后面的单引号注释掉),可以看到,它也能实现遍历。


四:搜索型注入 (以搜索k为例)

其内部的代码应该为:select uid,email from [表名] where username like ’%k%’ (k为我们到时候输入进去的东西)

因此我们可以继续构造闭合,诸如xxx%’ or 1 = 1# 对这个漏洞进行攻击,窃取信息。


五:xx型注入 

传参,传进去为=('ct')   ct为传进去的内容,同上构造合理的闭合: xx') or 1=1# 即可。

总之不管是什么类型,都是要对SQL中的各种类型的输入进行闭合测试,构造好合法SQL,欺骗后台执行。在实际的渗透测试过程中,需要我们去不断的尝试,判断,比如它是单引号闭合还是双引号闭合,判断输入的内容是否参与了后台逻辑运算,如 or 1= 1或是 or 1= 2,如果参与了,那么这个网站肯定是存在SQL inject漏洞的,还有其他好多好多,在网上自行查找。

此外,不管是get方式还是post方式,都可能出现SQL inject 漏洞,本质是一样的。

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

pikachu靶场--SQL inject--数字型(post)/字符型(get)/搜索型/xx型注入【4.1】~【4.4】 的相关文章

  • SQL 表别名 - 好还是坏? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 SQL 中使用表别名有哪些优点和缺点 我个人会尽量避免使用它们 因为我认为它们会使代码的可读性降低 特别是在阅读大型 where and 语
  • 触发器定义中的 DELETE 语句问题

    我创建了一个插入 更新触发器 旨在根据插入的数据更新不同表中的信息 触发器执行 或应该执行 的最后一件事是从目标表中删除所有数据 这些数据的条件在触发器的插入部分期间可能已更改 除了最后的之外 一切似乎都在触发DELETE陈述 它正在执行D
  • 仅当列不为 NULL 时才连接列

    我有一个像这样的 SQL Server 表 PERSON NAME PHONE PHONE1 PHONE2 PHONE CONCAT Name1 12345 Null Null Null
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • 当 SQL 包含变量时在 pgAdmin 中调试 SQL

    在 SQL Server 中 我可以从应用程序中复制 sql 代码并将其粘贴到 SSMS 中 声明并分配 sql 中存在的变量并运行 是的 很棒的调试场景 例如 请注意 我很生疏 语法可能不正确 declare x as varchar 1
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb
  • 添加日期时间和时间

    服务器 SQL Server 2012 SP1 开发者版 Code declare datetime datetime 1900 01 01 00 00 00 000 declare time time 11 11 11 select da
  • 在数据库中有效存储商品位置(用于订购)

    设想 有一个用户拥有的电影数据库 电影显示在一个名为 我的电影 的页面上 电影可以按照用户想要的顺序显示 例如 位置 1 为 搏击俱乐部 位置 3 为 Drive 依此类推 显而易见的解决方案是存储每个项目的位置 例如 电影 ID 用户 I
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • 有向图 SQL

    我有以下数据集 它表示有向图中的节点 CREATE TABLE nodes NODE FROM VARCHAR2 10 NODE TO VARCHAR2 10 INSERT INTO nodes VALUES GT TG INSERT IN
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 在带有循环引用的表中插入 SQL

    我有 2 张桌子 Empleados numEmpl nombre apellido sexo telefono salario numDept Departamentos numDept nombreDept numDirect 在部门中
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • 单链表实现多项式相加

    这个小项目用C语言实现 代码中有我的注释 思路 用链表的每个节点存储表达式的每一项 因此每个链表就是一个表达式 链表节点类型的定义 struct Node DataType elem 项的系数 Variate ch 常量和变量的标志 规定如
  • rand()每次产生的随机数都一样

    写了个程序 每次产生的随机数都是一样的 在调用之前已经初始化了随机数种子 用的是当前时间 可是还是得到一样的数 for int i 0 i lt 100000 i srand unsigned time NULL cout lt
  • shiro入门

    1 概述 Apache Shiro 是一个功能强大且易于使用的 Java 安全 权限 框架 借助 Shiro 您可以快速轻松地保护任何应用程序一一从最小的移动应用程序到最大的 Web 和企业应用程序 作用 Shiro可以帮我们完成 认证 授
  • Vue中获取input输入框值

  • 一个“制作午餐”的故事,帮助你理解并发和并行(上)

    导读 这是一个关于 午餐时间 的小故事 用于阐述 threading asyncio multiprocessing cloud functions 等内容 为了方便阅读并理解文章的内容 全文分上 下两篇 上篇主要讲解并发 下篇重点讲解并行
  • runtime交换方法的正确姿势

    runtime交换方法的正确姿势 说到Objective C大家就会想到黑魔法runtime 不知道runtime是什么的看这里 runtime是开源的 源码在这里 本文主要讲解如何利用runtime正确的交换方法 将会提到两种方式去交换
  • 在Linux的终端中显示BMPString的内容

    在上一篇博文中 介绍了如何在 Windows 的控制台界面下输出 BMPString 的内容 但是那里的方法在 Linux 下不适用 如果将那里的示例代码放到 Linux 下执行 输出的结果为乱码 产生乱码的原因在于 wchar t 类型的
  • 数据挖掘——第一章:概述

    文章目录 1 数据分析与数据挖掘 1 1 数据分析 1 2 数据挖掘 1 3 知识发现 KDD 的过程 1 4 数据分析与数据挖掘的区别 1 5 数据分析与数据挖掘的联系 2 分析与挖掘的数据类型 2 1 数据库数据 2 2 数据仓库数据
  • 思科网络配置简单学习

    一 VLAN 什么是VLAN 虚拟局域网 为什么要引入VLAN 1 交换机分割了冲突域 但是不能分割广播域 2 交换机端口数量增多 网络中广播增多 降低了网络的效率 3 目的为了分割广播域 VLAN的优势 广播控制 提高安全性 提高带宽利用
  • UDP \TCP详详详详解,你想要的全都有(呕心沥血)

    前言 因特网为应用层提供了两种截然不同的可用运输层协议 一个是UDP 用户数据报协议 一个是TCP 传输控制协议 这两种协议无论是在开发过程中 还是面试问答中 都相当重要 先了解两个定义 多路分解 将运输层报文段中的数据交付到正确的套接字
  • 2023 年 30 种顶级自动化测试工具

    当您想运行测试自动化时 天空是极限 甚至超越极限 技术发展如此之快 与 10 年前相比 您可以减少时间并保持更高的工作效率 如果 Selenium 是您首选的自动化测试工具 您就不必忍受 Selenium 给您带来的限制 相反 您可以从各种
  • Python基础知识(一):变量与赋值、运算符、数据类型及位运算

    学习目标 了解python的基本概念 变量类型 运算符 及数据类型 了解python的位运算 原码 反码和补码 注释 在 Python 中 表示注释 作用于整行 或者 表示区间注释 在三引号之间的所有内容被注释 在Pycharm或者Jupy
  • matlab 安装mingw64

    1 下载mingw64 MinGW w64 for 32 and 64 bit Windows download SourceForge net 解压到没有空格的路径 好像必须在c盘 否则可以出现 错误使用 configuremingw 无
  • List元素为类对象,按照类对象属性去重的解决办法

    很多小伙伴在开发中会遇到一个场景 就是List集合中存储的是类对象 我们想要根据类对象属性去重 这种场景该如何做呢 解决办法 大家都知道对象的equals默认是按照对象的应用地址去进行比较的 所以想要对象去重 关键就在于重写equals方法
  • 三极管驱动继电器详解

    http www 21ic com jichuzhishi analog basic 2015 08 24 638790 html
  • 基于STM32的多功能心电信号监测系统设计

    1 系统总体方案设计 系统由STM32F103微处理器模块 ADS1292R心电采集模块 LMT70体表温度传感器模块 ESP8266无线WiFi模块 MMA955L加速度计模块 系统电源 PC服务端等组成 STM32F103作为主控制器实
  • 2.4 Verilog HDL语句

    语句 1 赋值语句 结构说明语句 阻塞与非阻塞 1 1 赋值语句 1 1 1 连续赋值语句assign 1 1 2 过程赋值语局 和 lt 1 2 结构说明语句 1 2 1 结构说明语句always 1 2 2 结构说明语句initial
  • 【机器学习】噪声数据的理解

    文章目录 一 噪声数据 1 1 分箱 1 2 回归 1 3 聚类 1 4 其他 二 数据清理作为一个过程 2 1 偏差检测 2 1 1 使用 元数据 关于数据的数据 2 1 2 编码格式 存在使用不一致 数据表示不一致 2 1 3 字段过载
  • C语言编程中的8位、16位、32位整数的分解与合并

    在单片机的编程中对于8位 16位 32位整数的分解与合并用的比较多 今天做了简要学习 后面还需要加以总结 练习在VC 6 0编程环境中进行 源程序 include
  • pikachu靶场--SQL inject--数字型(post)/字符型(get)/搜索型/xx型注入【4.1】~【4.4】

    目录 一 概述 二 数字型注入 post 三 字符型注入 get 四 搜索型注入 以搜索k为例 五 xx型注入 一 概述 在owasp发布的top10排行榜里 注入漏洞一直是危害排名第一的漏洞 其中注入漏洞里面首当其冲的就是数据库注入漏洞