SQL注入學習 -- sqli-labs lesson 1

由於對SQL注入不太熟悉,所以就自己搭建了一個sqli-labs的平臺.

記錄一下自己的學習過程


首先我們要了解一下常規mysql數據庫的信息

information_schema() ------ 是mysql自帶的數據庫,記錄了數據庫各種信息

schemata ------ 包含各種數據庫名信息

tables ------ 各種表名

columns ------ 字段名



下面開始注入



id=1時顯示正常,加入單引號看看,報錯了


報錯的信息爲 near ''1'' LIMIT 0,1' ,拆分開就是 '  '1'  '  LIMIT 0,1  '    ,可以看到1的那裏多了一個單引號而且已經閉合了.所以就要把後面的那個引號註釋掉(ps:之前不理解的時候會想,可以直接不用加引號 然後構造payload,但是發現這樣子構造語句不能查詢到,是因爲永遠都在''裏面了)



下面開始猜字段長度




猜到字段長度只有3



然後查看回顯位置



發現並沒有正確的顯示回顯位置,(當時候這裏也不懂爲什麼,然後上網查看了一下,是源代碼那裏調用函數的問題)


百度了一下,mysql_fetch_array() 函數從結果集中取得一行作爲關聯數組,或數字數組,或二者兼有,大概意思就是說只顯示一行的數據= =.因爲他的查詢語句是"SELECT * FROM users WHERE id='$id' LIMIT 0,1",所以把左邊的弄爲空集(即id那裏不能大雨等於1,此外str,float等等都可以)



下面繼續進行查詢,構造payload爲localhost/sqli-labs/Less-1/?id=-1' union select 1,2,3 from information_schema.schemata--+


可以看到回顯位置了



下面進行常規的注入操作.先查看當前的數據庫名和版本


可以看到當前的數據庫名爲security,版本是5.7



繼續進行查詢數據庫名


查詢到全部的數據庫名,然後選security進行爆破



在security數據庫中查詢表名




看到存在users表,就直接破解


可以看到username和password,直接爆破


最後就把users中所有的用戶名和密碼查詢出來了


總結:這次做了sqli-labs的lesson1,感覺思路清晰不少,一步步地進行注入,學會看報錯信息和猜其本身的查詢代碼,不過還是要繼續努力O(∩_∩)O~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章