POST注入的分類有很多:
搜索框
登錄框
認證框
還有XXXX,總之什么情況就是什么注入
言而總之,都他么一樣,不就是POST傳數據的時候動點手腳么?
寫了個簡單的搜索框注入的網頁:
代碼折疊了,大家展開看

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>搜索型注入</title> 5 <meta charset="utf-8"> 6 </head> 7 <body> 8 <h1>學無止境--POST注入</h1> 9 <form action="" method="POST"> 10 搜索內容:<input type="text" name="content"> 11 <input type="hidden" name="hid" value="1"> 12 <input type="submit" name=""> 13 14 </form> 15 <?php 16 if(isset($_POST['hid'])){ 17 $content = !empty($_POST['content'])?$_POST['content']:""; 18 if($content == ""){ 19 exit("請輸入要搜索的內容"); 20 } 21 $link = mysql_connect("127.0.0.1","root","root"); 22 mysql_query("set names utf8"); 23 mysql_select_db("sqli"); 24 $sql = "select * from search where content = '$content'"; 25 /* 26 創建數據表 27 create table search( 28 id int primary key auto_increment, 29 content varchar(30) 30 )charset utf8; 31 插入測試數據 32 insert into search values(NULL,'Hello'),(NULL,'World'); 33 */ 34 $result = mysql_query($sql); 35 while($row = mysql_fetch_array($result)){ 36 echo "ID:".$row['id']; 37 echo "內容:".$row['content']; 38 echo "<hr />"; 39 } 40 echo "執行的SQL語句:$sql"; 41 } 42 ?> 43 </body> 44 </html>
我數據庫一共有兩條數據,分別是Hello和World,來搜索一下看看
分析一下執行的SQL語句,我們通過數據庫查詢條件為content字段內容等於Hello的數據,但這個SQL語句並不安全
我們把搜索內容換一下:Hello' and 1=1 #
可以看到結果也是正常的.也就是說我們成功的把語句代入到數據庫了.
接下來也就和普通注入沒什么區別了...
OK,簡單的解釋一下SQL語句.我們搜索的內容是Hello' and 1=1 #,代入到數據庫的語句是:select * from search where content = 'Hello' and 1=1 #'
在Hello后面的那個單引號閉合了前面的單引號,讓Hello成為了一個單獨的字符串,隨即就是我們的注入語句,最后是一個#,注釋了后面的單引號,數據庫在執行語句的時候其實執行的是:select * from search where content = 'Hello' and 1=1,這個語句相信大家就很熟悉了.
大家有喜歡的可以加個好友一起研究學習.