【网安小白成长之路】9.sql注入操作

news2024/11/17 18:50:41

🐮博主syst1m 带你 acquire knowledge!

✨博客首页——syst1m的博客💘

🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭

😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈

😎《大数据专栏》大数据从0到秃头👽,从分析到决策,无所不能❕

🔥 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样的官方大型专栏,python面向对象必学之一!🐽

😋《性格荷官在线送书活动》不定期会存在有送书活动哦,大部分肯定是网安内容的书籍啦宝子们!💘

🎉希望本文能够给读者带来帮助,更好地理解这个问题或解决你的困惑🐾

文章目录

  • 前言
  • 一、sql注入操作
    • 1.sql盲注
      • 1-1.什么是盲注
      • 1-2.时间型盲注
      • 1-3.布尔型盲注
    • 2.http头注入
      • 2-1.什么是http头注入
      • 2-2.http头注入实操
    • 3.cookies注入
      • 3-1.什么是cookies注入
      • 3-2.cookies注入实操
    • 4.宽字节注入
      • 4-1.什么是宽字节注入
      • 4-2.宽字节注入实操
  • 二、总结

前言

学习SQL注入至关重要,它不仅是网络安全领域的关键一环,更是提升技术能力的有效途径。掌握SQL注入技术,可增强对数据库安全的防范意识,为数据安全保驾护航,为职业发展增添竞争力。

一、sql注入操作

1.sql盲注

1-1.什么是盲注

  • 当攻击者利用sql注入漏洞进行攻击时,有些时候web应用程序会返回后端执行sql查询返回的错误信息,这些信息能够帮助我们进行sql注入;但更多情况是,数据库没有输出到页面,这时攻击者会询问一些列是或否问题,或基于时间判断的问题,强制从数据库获取信息
  • Blind SQL(盲注)是注入的一种,向数据库发送true或false这样的问题,根据应程序返回的信息判断结果,出现这种方式的攻击是因为配置了只显示常规错误,并不显示sql语句,这种方式并没有解决存在sql注入的问题
  • 盲注分为 布尔型盲注 和 时间型盲注,其中用的最多是时间型盲注

1-2.时间型盲注

常用的判断语

  • ’ and if(1=0,1,sleep(10)) --+
  • " and if(1=0,1,sleep(10)) --+
  • ) and if(1=0,1,sleep(10)) --+
  • ') and if(1=0,1,sleep(10)) --+
  • ") and if(1=0,1,sleep(10)) --+

它们之间也就闭合方式不同

利用if(条件),函数, 当条件为真,返回1,否则0

sqli-labs 里面的 9,10 就是时间型盲注

我们打开Less-9

在我们知道数据库名称为 security 时,直接判断数据库第一个字符是否为 s

http://localhost/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(3),1) --+
 databases获取数据库名称 substr截取字符串,从1开始截取1个 ascii转换成ascii编码
 判断为真执行sleep(5)
 判断为假就直接什么都不做

我们可以按 F12 打开检查,在点击网络,再在url中输入,可以发现他要3秒后才开始响应

在这里插入图片描述

当我们不知道数据库名字呢?使用二分法,先判断是否大于90,是的话再判断是否120,否的话就小一点,以此类推就可以知道正确值为115

但是在实际中,很多常用函数是会被过滤掉,需要绕过

1-3.布尔型盲注

布尔型盲注和时间型盲注是差不多的

我们打开Less=9

可以判断字符串的长度或判断字符

成功就会显示 You are in…

判断数据库名称是否为8位数

http://localhost/sqli-labs/Less-8/?id=1' and length(database())=8 --+

在这里插入图片描述

判断数据库名称第一位是否是 s

http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr(database(),1,1))=115 --+

在这里插入图片描述

2.http头注入

2-1.什么是http头注入

在如今很多网站都会防止漏洞的发生,在sql注入中,会对用户提交的参数进行过滤。虽然会过滤掉用户直接提交的参数,但是对于http头中的内容可能没有进行过滤,例如http头中的User-Agent、Referer、Cookies等

2-2.http头注入实操

我们进入Less-18

我们正常登陆一下查看返回信息

在这里插入图片描述

我们想要进行http头注入需要抓包

我们打开burp,再登陆时抓包

可以看到它们的User Agent时一样的

在这里插入图片描述

判断是否有注入点

发送到重放器(Repeater),再User-Agent最后面加上单引号,点击发送

在这里插入图片描述

提示这里错了说明有注入点

使用重放器(Repeater)进行渗透

updateexml(xml_document,xpath_string,new_value)

  • 参数一:XML文档对象名称

  • 参数二:XPath字符串

  • 参数三:替换查找到符合条件的数据

获取数据库名称

' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or'1'='1
0x7e是十六进制的波浪号~

在这里插入图片描述

3.cookies注入

3-1.什么是cookies注入

cookies是一种由服务器发送到用户浏览器并保存在用户计算机上的小型文本文件,用于识别用户身份、跟踪用户活动、保存用户设置等。它在网站会话管理、个性化体验等方面发挥着重要作用。cookies典型应用是判断用户是否已经登陆网站,是否下次登陆时保留登陆信息,或类似购物车这种的,选中的商品信息都加入cookies中以便付款时提取信息

我们可以在开发者工具里面的控制台输入 document.cookie 来查看cookie

在这里插入图片描述

3-2.cookies注入实操

我们进入Less-20

登陆Dumb这个账号 密码Dumb

可以在控制台中看到 cookie 为 uname=Dumb

在这里插入图片描述

cookies注入需要使用burp抓包,开启拦截之后刷新页面

在这里插入图片描述

发送到重放器(Repeater),加上 反斜杠 查看是否有注入点

在这里插入图片描述

现在我们就可以开始获取数据了

获取数据库版本

' and updatexml(1,concat(0x7e,(select version()),0x7e),1) or'1'='1

在这里插入图片描述

4.宽字节注入

4-1.什么是宽字节注入

宽字节概念

  • 单字节字符集,所有的字符都使用一个字节来表示
  • 多字节字符集,再在多字节字符集中,一部分字符用多个字节来表示,另一部分用字符用单个来表示(可能没有)

宽字节注入是利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字

php中编码为GBK,函数执行添加的是ASCII编码,mysql默认字符是GBK

php的宽字节

addslashes()函数,在预定字符前添加反斜杠,单引号 ’ 双引号 " 反斜杠 \ NULL

<?php
    $abc=addslashes('hao "are" you');
    echo($abc); 
	// hao \"are\" you
?>

宽字节注入原理

%DF’ 会被PHP当中的 addslashes 函数转义为 " DF\ ’ “,\在URL里是“%5C”,那么也就是说,“ %DF’ "会 被转成“%DF%5C%27,倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%DF%5C%27”是一个宽字符。

数据库使用的是GBK编码,PHP编码为UTF8就可能出现宽字节注入,原因是为了防止发生SQL注入,会调用上面所介绍的几种函数,将单引号或双引号进行转义操作,在单或双引号前加上反斜杠 \ 。当数据库使用的是宽字节编码会将两个连在一起的字符会被当做是-一个汉字,而在PHP使用的UF8编码则认为是两个独立的字符。

4-2.宽字节注入实操

我们进入Less-33

简而言之差不多就是将之前的 ’ 换成了 %df%27

http://localhost/sqli-labs/Less-33/?id=0%df%27 union select 1,2,3 --+

在这里插入图片描述

二、总结

今天的这期内容主要是sql盲注、http头注入、cookies注入、跨字节注入,主要是围绕sql-labs靶场进行学习,虽然文字有些偏多,但是还是很好理解的,如果你还有什么问题的话,记得私信我哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1621407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue:vue的工程化

Vue前端工程化 前后端分离开发 即前端人员开发前端工程,将开发好的前端工程打包部署在前端服务器上 后端开发人员开发后端工程,再将后端工程打包部署在后端服务器上,这种模式称为前后端分离开发 而前后端要顺利对接的关键就是要遵循一定的开发规范 开发规范 这种开发规范定…

STC8H8K64U I2C主机模式相关寄存器

STC8H8K64U I2C主机模式相关寄存器 STC8H8K64U-TSSOP20 I2CCFG I2C配置寄存器 I2CMSCR I2C主机控制寄存器 I2CMSST I2C主机状态寄存器 I2CMSAUX I2C主机辅助控制寄存器 I2CTXD I2C数据发送寄存器 I2CRXD I2C数据接收寄存器 I2CCFG I2C配置寄存器 B7ENI2C ENI2C&#xff1a…

【题解】NowCoder DP4 最小花费爬楼梯

题目来源&#xff1a;牛客 DP4 最小花费爬楼梯 题目描述&#xff1a; 给定一个整数数组 cost &#xff0c; 其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用&#xff0c;下标从 0 开始。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从…

Bayes判别示例数据:鸢尾花数据集

使用Bayes判别的R语言实例通常涉及使用朴素贝叶斯分类器。朴素贝叶斯分类器是一种简单的概率分类器&#xff0c;基于贝叶斯定理和特征之间的独立性假设。在R中&#xff0c;我们可以使用e1071包中的naiveBayes函数来实现这一算法。下面&#xff0c;我将通过一个简单的示例展示如…

多目标果蝇算法及其MATLAB实现

果蝇算法最早的文献是由台湾华夏科技大学的潘文超教授于2011年提出来的。该算法是基于果蝇觅食行为的仿生学原理而提出的一种新兴群体智能优化算法&#xff0c;被称为果蝇优化算法(Fruit Fly Optimization Algorithm, FOA)。通过模拟果蝇利用敏锐的嗅觉和视觉进行捕食的过程&am…

JTS:Java Topology Suit

接口文档:org.locationtech.jts:jts-core 1.19.0 API。 开发文档:JTS | Documentation。 概述 JTS提供了平面线性几何(planar and linear geometry)与相关的基础几何处理函数(a set of fundamental geometric functions.)。 JTS遵循OGC发布的简单几何规范(Simple Featu…

docker 基本命令

目录 一、docker 镜像操作命令 1.1.查询软件镜像 1.2.docker pull&#xff1a;下载镜像 1.3.docker push&#xff1a;上传镜像 1.4.docker images&#xff1a;查看本地镜像 1.5.docker inspect &#xff1a;获取镜像详细信息 1.6.docker tag&#xff1a;添加镜像标签 …

attempt to compare nil with number -- 黑马点评出现问题

问题情况 : 主要问题 : 调用lua执行redis时&#xff0c;有一个值会接受nil&#xff08;因为redis中没有该数据&#xff09;或者数值&#xff0c;当该值为nil时执行报错&#xff0c;因为会用到将该值与其他数字比较&#xff0c;故报错attempt to compare nil with number 当然…

【uniapp】引入uni-ui组件库

&#xff08;1&#xff09;新建项目的时候选择 uni-ui项目 &#xff08;2&#xff09;已经创建好的项目去官网单独安装 跳转单独安装组件 https://uniapp.dcloud.net.cn/component/uniui/quickstart.html#%E9%80%9A%E8%BF%87-uni-modules-%E5%8D%95%E7%8B%AC%E5%AE%89%E8%A3%8…

详细分析mysqlslap的基本知识 | 压力测试(附Demo)

目录 前言1. 基本知识2. 参数解读2.1 auto-generate-sql2.2 only-print2.3 iterations2.4 并发处理参数 前言 对数据库进行压力测试&#xff0c;对此补充这方面的详细知识点 1. 基本知识 mysqlslap 是 MySQL 自带的用于模拟数据库负载的压力测试工具 可以模拟多个客户端并发…

基于51单片机的矩阵按键扫描的proteus仿真

文章目录 一、按键按键按键消抖 二、独立按键仿真图仿真程序 三、矩阵按键仿真图仿真程序 四、总结 一、按键 按键 按键通常指的是电子设备上的一种输入装置&#xff0c;用于在按下时发送信号&#xff0c;以便设备执行相应的操作。按键可以分为独立按键和矩阵按键两种类型。 …

10.Java集合汇总

文章目录 1. Java集合概述1.1 Java集合框架概述1.2 Collection接口继承树1.3 Map接口继承树 2. Collection接口2.1 Collection接口方法 3 Iterator迭代器接口3.1 Iterator接口的方法3.2 foreach循环 4 List接口4.1 List接口方法4.1 ArrayList4.2 LinkedList4.3 Vector4.4 面试题…

free 命令示例

目录 ⛳️推荐 前言 Linux 中如何使用 free 命令 1、以人类可读的形式显示信息 2、连续显示统计数据 3、定义显示统计数据的次数 4、指定输出数据类型 5、获取物理内存和交换内存的总和 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&am…

[MYSQL索引优化] 分页查询优化

这里一共介绍两种常见的分页索引优化技巧,let go! 示例表: CREATE TABLE t_product (id int(0) NOT NULL,pname varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,price double(7, 2) NULL DEFAULT 0.00,promoteSales varchar(200) CHARA…

5分钟搞懂词向量生成技术:Word2Vec

大家好啊&#xff0c;我是董董灿。 今天我们来简单聊一个在自然语言处理&#xff08;NLP&#xff09;中非常有用的技术——Word2Vec。 之前曾经写过一些关于文本处理的基础知识&#xff0c;包括判断两个文本是否相似&#xff0c;可以使用余弦相似度&#xff0c;但在此之前&am…

C++多态(个人笔记)

C多态 1.多态的定义以及实现1.1多态的构成条件1.2虚函数1.3虚函数的重写1.4override和final1.5函数重载&#xff0c;覆盖&#xff08;重写&#xff09;&#xff0c;隐藏&#xff08;重定义&#xff09;区别 2.抽象类2.1接口继承和实现继承的区别 3.多态原理3.1虚函数表3.2多态的…

PHP定期给自己网站目录做个特征镜像供快速对比

效果图 上代码&#xff1a; <style> h1{font-size:24px;line-height:180%;font-weight:600;margin:1px 2px;color:#0180cf;} h2{font-size:20px;line-height:140%;font-weight:600;margin:2px 4px;color:green;} h3{font-size:16px;line-height:140%;font-weight:600;m…

冯喜运:4.24-4.25黄金原油双双跳水、今日走势分析

【黄金消息面解析】&#xff1a;随着全球经济不确定性继续影响市场&#xff0c;黄金价格面临关键时刻。在最近的下跌之后&#xff0c;黄金价格正在测试关键支撑水平&#xff0c;投资者密切关注美国经济数据&#xff0c;以了解美联储的利率政策路径。让我们深入探讨推动黄金价格…

密码错误冻结时间,强制修改密码时间,密码强度,首次登录是否修改密码

新建单表&#xff0c;各种字段&#xff0c;项目启动时加载到redis缓存中。问题&#xff1a;修改数据后&#xff0c;缓存中数据未修改&#xff1f;是否设置超时时间&#xff0c;每次登录的时候判断缓存中有没有&#xff0c;没有新增一次&#xff0c;有了就用缓存中数据&#xff…

牛客NC179 长度为 K 的重复字符子串【simple 哈希,滑动窗口 C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/eced9a8a4b6c42b79c95ae5625e1d5fd 思路 哈希统计每个字符出现的次数。没在窗口内的字符要删除参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c…