我目前正在尋找通過(不盲目)高級別的類別sql注入應用dvwa。Bypass php is_numeric()函數是可能的嗎?
即使有一些想法和工具可以讓生活變得更輕鬆,但找不到解決方案。
源代碼形式爲風扇如下:
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分貝的值:
+------------+-------------+------+-----+---------+
| 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角色,例如意味着我們繞過它......再次是的,也許我看到的所有事情天泰的道路,但我沒有實際測試過。爲什麼?
假設我繞過mysql_escape_string()和如果我們繼續讀取由PHP代碼執行的下一步驟中,我們可以讀取功能:
if(is_numeric($id))...
檢查變量的類型。 (另外,我不知道我是否使用確切的術語,但是很好)。這意味着,如果我想在這裏插入一個引用,它必須在forcemmentnumérique.Donc大小我靠着名的PHP函數,我意識到我們可以輸入相同的二進制或十六進制值(但在所有情況下,它會函數轉換輸出後,我現在我真的不知道....)。所以我在 的第一個想法的輸入是得到0x27插入一個報價,但當然這個值被解釋爲整數,而不是字符串類型的輸出,所以如何解釋我的報價......我認爲問題是在這一方面,但我喜歡思考......如果你只有一條軌道(除了告訴我看一下谷歌,我已經做了四天的工作^^),我很感興趣。所以大家(或女孩),威爾被稱爲大師Sqli? 謝謝你的時間...(對不起,谷歌翻譯)
試着回答他的原始問題。 – everlasto