我在寫一個演示網頁來顯示類項目的SQL注入技術。我幾乎可以肯定,它是以正確的方式編碼的,但是我無法使實際的注入工作。該代碼應該從HTML文本框輸入並檢查名爲「stock」的表並輸出結果(如果有的話)。這裏是代碼的相關部分:不能sql注入我的代碼
<?php
//connect to db
$con = @mysql_connect('localhost','root','Secure') or die('Failed.');
mysql_select_db('test', $con) or die('Could not select database.');
?>
<!-- <div>Text box, takes user input for a search</div>-->
<div class="center">
<form action="index.php" method="post">
<p>Search: <input type="text" name="lookup" placeholder="Whatchu tryna find?"></p>
<br>
<p class= button ><input type="submit" name="search" value="search" size="100"></p>
</form>
</div>
<!-- <div>End of HTML code</div>-->
<?php
//Check if there is input, then put it in a variable called $search
if(isset($_POST['lookup'])){
$search = $_POST['lookup'];
if(empty($search)){
echo "Fill in all the fields";
exit();
}
}
//Query statement, held by $query
$query = mysql_query("SELECT * FROM `stock` WHERE `Name` LIKE '%$search%'");
//Take results from $query, output them
while ($list = mysql_fetch_assoc($query)){
echo 'Item: ' . $list['Name'] . '<br>';
echo 'Price: $' . $list['Price'] . '<br>';
echo 'Stock: ' . $list['Quantity'] . '<br>';
}
?>
我可以成功地搜索「股票」表,我可以通過搜索%
或通過輸入http://localhost/index.php?search=hammer%20OR%201=1
到瀏覽器中的表輸出一切。但這就是我迄今爲止所能做的。
有沒有什麼我可以在這段代碼中改變,以使SQLi更容易?或者我的SQLi技術出了問題?只要我可以顯示多種技術,從文本框或地址欄中注入發生的地方並不重要。我可以從地址欄中轉儲表,但我想要顯示sleep()函數以及導航到其他表的信息,並從我的服務器中的其他數據庫轉儲信息。但我很難找出如何做到這一點。
最後,有沒有任何人都知道的SQLI腳本或程序可以運行在我的本地主機上?我仍然需要演示手動技巧,但我認爲向班級展示一個合適的工具能夠攻擊易受攻擊的網站有多快是一件好事。很明顯,我只會在我的項目中使用這個,因爲我不想進監獄。
編輯:帖子How can I prevent SQL injection in PHP?被鏈接,它似乎很詳細,但不是我所期待的,因爲我需要知道如何打破網站,而不是解決它。這個問題的確似乎與我的SQLi技術。
[sqlmap](https:// github。com/sqlmapproject/sqlmap)是一個很好的SQL注入工具 – Blag
[我怎樣才能防止PHP中的SQL注入?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql -injection-in-php) – Qirel
如果你在你的表單中執行'whatever'或1 = 1 - ',它將完全繞過LIKE。這是SQL注入。 – Qirel