(原创)对SQLMAP -g自动挖洞程序补充的后续配套代码及应用 仅用于学习和方法研究
前言
在这之前,我们发布了一篇《(原创)基于SQLMAP和Google实现自动挖洞 仅用于学习和方法研究》,今天开源的是其配套的后续程序,能够实现结果上传,并保存至数据库中,方便查看。
注意:下面的程序没有进行安全增强,可能会带来SQL注入问题,请在内网搭建使用即可。
摘要
在今天的博客中,我们将介绍两个PHP程序。第一个程序用于处理上传的ZIP文件,提取其中的CSV文件,并将CSV文件的内容保存到服务器上的指定目录。第二个程序用于将这些CSV文件中的数据插入到MySQL数据库中,以便进一步分析和管理。我们将详细解释这两个程序的功能和用法。
正文
第一个PHP程序:处理ZIP文件上传
这个PHP程序的主要功能是处理用户上传的ZIP文件,提取其中的CSV文件,并将符合特定命名规则的CSV文件保存到服务器上的指定目录。以下是该程序的主要部分
<?php
$uploadDirectory = './results/';
$zipDirectory = './uploaded_zips/';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_FILES['zip']['name'])) {
$zipFile = $_FILES['zip']['tmp_name'];
// 检查文件是否是ZIP压缩包
if (is_uploaded_file($zipFile) && pathinfo($_FILES['zip']['name'], PATHINFO_EXTENSION) === 'zip') {
// 创建目录以存放ZIP文件
if (!file_exists($zipDirectory)) {
mkdir($zipDirectory, 0755, true);
}
$zipFilePath = $zipDirectory . $_FILES['zip']['name'];
// 移动上传的ZIP文件到目标目录
if (move_uploaded_file($zipFile, $zipFilePath)) {
$zip = new ZipArchive();
// 打开ZIP文件
if ($zip->open($zipFilePath) === true) {
$csvCount = 0; // 计数CSV文件数
$csvsWithResultsPrefix = 0; // 计数以"results"开头的CSV文件数
// 遍历ZIP文件中的所有文件
for ($i = 0; $i < $zip->numFiles; $i++) {
$fileInfo = $zip->statIndex($i);
$csvFileName = $fileInfo['name'];
// 检查文件是否是CSV文件
if (pathinfo($csvFileName, PATHINFO_EXTENSION) === 'csv') {
$csvCount++;
// 检查文件名是否以"results"开头
if (strpos($csvFileName, 'results') === 0) {
$csvsWithResultsPrefix++;
// 解压文件到目标目录
$csvFilePath = $uploadDirectory . $csvFileName;
file_put_contents($csvFilePath, $zip->getFromIndex($i));
}
}
}
$zip->close();
// 删除上传的ZIP文件
unlink($zipFilePath);
if ($csvCount > 0 && $csvCount === $csvsWithResultsPrefix) {
echo "所有CSV文件均以'results'开头并已保存至目标目录。";
} else {
echo "已丢弃不符合要求的CSV文件和ZIP文件。";
}
} else {
echo "无法打开ZIP文件。";
}
} else {
echo "无法移动上传的ZIP文件。";
}
} else {
echo "请选择一个ZIP文件上传。";
}
} else {
echo "请选择一个ZIP文件上传。";
}
}
?>第二个PHP程序:将CSV数据插入MySQL数据库
这个PHP程序的主要功能是将CSV文件中的数据插入到MySQL数据库中,以便进一步分析和管理。以下是该程序的主要部分:
<?php
// MySQL数据库连接信息,请根据实际情况填写
$host = '127.0.0.1';
$username = 'abc';
$password = 'abc';
$database = 'abc';
// 连接MySQL数据库
$conn = mysqli_connect($host, $username, $password, $database);
// 检查连接是否成功
if (!$conn) {
die("连接数据库失败: " . mysqli_connect_error());
}
// 文件夹路径
$folderPath = './results'; // 请替换成实际的文件夹路径
// 扫描文件夹并处理CSV文件
$files = glob($folderPath . '/results*.csv');
foreach ($files as $file) {
// 读取CSV文件
if (($handle = fopen($file, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// 跳过首行
if ($data[0] === 'Target URL') {
continue;
}
// 提取数据
$targetURL = $data[0];
$place = $data[1];
$parameter = $data[2];
$technique = $data[3];
$note = $data[4];
// 使用参数化查询插入数据到MySQL数据库
$query = "INSERT INTO SQLVulnerabilityLibrary (TargetURL, Place, Parameter, Technique, Note) VALUES (?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, "sssss", $targetURL, $place, $parameter, $technique, $note);
if (mysqli_stmt_execute($stmt)) {
echo "插入成功: $targetURL\n";
} else {
echo "插入失败: " . mysqli_error($conn) . "\n";
}
mysqli_stmt_close($stmt);
}
fclose($handle);
} else {
echo "无法打开文件: $file\n";
}
}
// 关闭数据库连接
mysqli_close($conn);
?>联合应用
接下来,你可以自己设计一个php程序,或者任意语言的程序,链接数据库即可进行查询。当然,你也可以设计定时程序,对漏洞进行验证,也可以插入Mail功能。
这个查询的就不开源了,非常简单的一个数据库查值,没必要开放了。




