1. 程式人生 > >WEB新手之sql註入

WEB新手之sql註入

att nbsp ati 利用 過去 ron idt 兩個 分享圖片

  繼續寫題。

技術分享圖片

  這題看上去是一道sql註入題。F12查看後臺代碼。

技術分享圖片

  可以看到後臺有兩個變量,分別是uname以及passwd。然後接下來讀一下後臺的代碼,這裏的意思是,如果用戶輸入的密碼經過md5加密後,和通過select語句選出來的password相等,則輸出“login success”,否則輸出“login fail”。利用這裏md5()條件語句,我們可以對後臺的sql語句進行註入。

技術分享圖片

  發包之後,這裏後臺的sql語句實際上就變成了"select password from gwuser where username =‘-1‘ union select md5(1)#‘"

。接下來後臺條件語句進行判斷的時候,因為此時row[‘password‘]為md5(1),而發過去的包裏面passwd亦等於md5(1),條件成立,所以頁面會跳轉到這樣一個界面,如下圖所示。

技術分享圖片

  繼續F12查看後臺代碼,如下圖所示。

技術分享圖片

  可以看到後臺也有兩個變量,分別是no和name。先嘗試一下sql註入爆表,如下圖所示。

技術分享圖片

  成功爆出表名——“gwhts"

  而後繼續爆行,如法炮制。不過接下來很快會發現報錯,彈出"Attack!"

技術分享圖片

  檢查過自身語句沒有錯誤後,這時考慮到了後臺對標點符號的過濾(本題亮點)。於是將? / . ‘ ` "

等英文標點符號導入到burpsuit,一起發包,得到下圖。

技術分享圖片

技術分享圖片

  通過上面兩張圖我們可以發現,在輸入name變量的時候,被後臺過濾掉了,而其他字符沒有。於是sql註入語句應該要改為"no=-1\&name= union select column_name from information_schema.columns where table_name="gwhts" limit 1,1#"。爆出行val。

  最後爆出flag。如下圖所示。

技術分享圖片

WEB新手之sql註入