我目前正在寻找一个通过(不是盲目的)高级类别sql注入应用程序dvwa。
即使有一些让生活更轻松的想法和工具,也找不到解决方案。
源代码形式如下:
if (isset($_GET['Submit'])) {
// Retrieve data
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
if (is_numeric($id)){
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num = mysql_numrows($result);
$i=0;
while ($i < $num) {
$first = mysql_result($result,$i,"first_name");
$last = mysql_result($result,$i,"last_name");
echo '<pre>';
echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
echo '</pre>';
$i++;
}
}
}
和任务并检索具有以下结构的用户表 dvwa db 中的值:
+------------+-------------+------+-----+---------+
| Field | Type | Null | Key | Default |
+------------+-------------+------+-----+---------+
| user_id | int(6) | NO | PRI | 0 |
| first_name | varchar(15) | YES | | NULL |
| last_name | varchar(15) | YES | | NULL |
| user | varchar(15) | YES | | NULL |
| password | varchar(32) | YES | | NULL |
| avatar | varchar(70) | YES | | NULL |
+------------+-------------+------+-----+---------+
6 rows in set (0.00 sec)
然后你当然会说(正如我在网上到处看到的那样)是编码字符。我理解,是的,我们有更多的字符集,可以以不同的方式编写电子邮件(例如多字节)。但我就是连你都找不到。我理解上面的php表单代码是这样的:
已经首先必须绕过 mysql_real_escape_string() 所以我的研究第一次集中到那里。使用游戏中的 big5 角色,例如意味着我们绕过它……再次,是的,也许我在路上看到了 Tenai 的一切,但我还没有实际测试过。为什么?
假设我绕过了mysql_real_escape_string(),如果我们继续阅读php代码执行的下一步,我们可以阅读该函数:
if(is_numeric($id))...
检查变量的类型。(此外,我不知道我是否使用确切的术语但很好)。这意味着如果我想在这里插入一个引号,它必须在 forcemment numérique.Donc size 我靠着著名的 php 函数,我意识到我们可以输入相同的二进制或十六进制值(但在所有情况下它都会在我之后转换输出的功能,现在我真的不知道....)。所以我在第一个想法中的输入是让 0x27 插入一个引号,但当然这个值被解释为整数而不是字符串类型的输出,所以如何解释我的引号......我认为问题出在这一边,但我稍稍想一想...如果您只有一首曲目(除了告诉我在谷歌中查找,我已经做了四天了 ^ ^),我很感兴趣。所以男人(或女孩),那威尔被昵称为Sqli大师??谢谢你的时间......(对不起谷歌翻译)