Pikachu實驗過程1(函式報錯的資訊)

2021-09-16 23:07:38 字數 2599 閱讀 3954

一.基於函式報錯的資訊獲取

1.常用報錯函式updatexml().extractvalue().floor()

2.(select/insert/update/delete)

技術思路:

在mysql中使用一些指定的函式來製造報錯,從而從報錯資訊中獲取設定的資訊。

select/insert/update/delete都可以從報錯資訊中獲取。

背景條件:後台沒有遮蔽資料庫報錯資訊,在語法發生錯誤時會輸出在前端。

updatexml():函式是mysql對xml文件資料進行查詢和修改的xpath函式

extractvalue():函式也是mysql對xml文件資料進行查詢的xpath函式

floor():mysql中用來去整的函式

updatexml()函式作用:改變(查詢並替換)xml文件中符合條件的節點的值。

語法:updatexml(xml_document.xpathstring,new_value)

第乙個引數:fiedname是string格式,為表中欄位名。

第二個引數:xpathstring(xpath格式的字串)。

第三個引數:new_valye,string格式,替換查詢到符合條件的

xpath定位必須是有效的,否則會發生錯誤

二.select報錯下的演示

1.update注入演示

三…基於函式報錯的資訊獲取

三個常用來報錯的函式-extractvalue

函式的作用:從目標xml中返回包含所查詢值的字串

語法:extractvalue(xml_document,xpath_string)

第乙個引數:xml_document是string格式,為xml文件物件名稱。

第二個引數:xpath_string(xpath格式的字串)

xpath定位必須是有效的,否則會發生錯誤。

四.基於http header的注入

通常http訊息包括客戶機向伺服器的請求訊息和伺服器向客戶機的響應訊息。這兩種型別的訊息由乙個起始行,乙個或者多個頭域,乙個只是頭域結束的空行和可選的訊息體組成。http的頭域包括通用頭,請求頭,響應頭和實體頭四個部分。每個頭域由乙個網域名稱,冒號(:)和域值三部分組成。網域名稱是大小寫無關的,域值前可以新增任何數量的空格符,頭域可以被擴充套件為多行,在每行開始處,使用至少乙個空格或製表符。

五.盲注

常見型別

1.基於布林型sql盲注

boolean注入:構造sql判斷語句,通過檢視頁面的返回結果來推測哪些sql判斷條件是成立的,以此來獲取資料庫中的資料。

(1).判斷當前資料庫庫名的長度

(2).獲取當前資料庫庫名

由於資料庫的庫名範圍一般在a-z,0-9之間,可能有特殊字元,不區分大小寫。所以可以逐字元判斷當前資料庫庫名,使用substr來擷取database()的值,一次擷取乙個,注意和limit的從0開始不同,它是從1開始。

(3).獲取資料庫表名

2.基於時間型sql盲注

時間盲注:基於的原理是,當對資料庫進行查詢操作,如果查詢的條件不存在,語句執行的時間便是0.但往往語句執行的速度非常快,執行緒資訊一閃而過,得到的執行時間基本為0. 利用sleep()或benchmark()等函式讓mysql執行時間變長經常與if(expr1,expr2,expr3)語句結合使用,通過頁面的響應時間來判斷條件是否正確。if(expr1,expr2,expr3)含義是如果expr1是true,則返回expr2,否則返回expr3

select sleep(n)可以讓此語句執行n秒鐘。但是如果查詢語句的條件不存在,執行的時間便是0,利用該函式這樣乙個特殊的性質,可以利用時間延遲來判斷我們查詢的是否存在。

這便是sql基於時間延遲的盲注的工作原理

3.基於報錯型sql盲注

六.os遠端控制

Python 函式實驗部分1

題目 python,演算法,函式 全數字問題 題目描述 如果乙個n位數 n 10 剛好包含了1至n中所有數字各一次則稱它們是全數字 pandigital 的,例如四位數1324就是1至4全數字的。從鍵盤上輸入一組整數 不止乙個 輸出其中的全數字,若找不到則輸出 not found 形如 def pa...

實驗七 函式及陣列(1)

一 實驗內容 由於函式部分大部分同學反映難,因此本次實驗的內容要求同學們按照課堂上的示例,在主函式中定義乙個選單功能,顯示實驗六中的每一道題目,根據輸入編號的不同,選擇對應的題號執行,如圖 1所示 圖1 函式實驗選單 用陣列來處理求 fibonacci 數列問題 求前 40項 二 實驗要求 1 實驗...

oracle儲存過程和儲存函式(1)

第乙個儲存過程 create orreplace procedure sayhelloworld asbegin dbms output.put line hello world end 呼叫儲存過程 1.execute exec 2.在儲存過程中呼叫 begin sayhelloworld end...