在SQLMAP中使用動態SQL

2021-09-08 07:27:55 字數 1547 閱讀 4153

最近有幾個同事和朋友詢問如何在sqlmap中「拼接字串」,因為有時候條件的數量不固定,條件引數型別也不固定,無法寫出 @引數名 這樣的sql語句,也就是大家常說的「動態sql」問題。pdf.net資料開發框架在1.0版本就支援這個功能了,而且在sqlmap說明裡面也寫了,但就是沒有人看

這裡舉乙個實際的例子說明如何使用動態sql。

1,設有下面的乙個sqlmap指令碼:

<

select 

commandname

="getremindsbywhere"

commandtype

="text"

method

=""description

="查詢提醒記錄根據條件"

resultclass

="dataset"

>

select a.guid,a.remindttile,a.remindcontent,a.reminddate,

case when a.isread = 0 then '未處理' else '已處理' end isread,b.customername,c.modelname,b.guid userid

from wft_remindrecord a  

left join wft_customer b on a.customerid = b.guid 

left join tb_common_modelinfo c on a.remindtypeid = c.modelid

where 1=1  and   #%tiaojian%# 

]]>

select

>

commandclass

>

使用「替換引數」,僅需要在引數名外麵包乙個 #%..%# 即可,不需要指定引數的型別,因為「替換」本身就是針對字串的替換,例如下面的方式是不正確的:

where 1=1  and   #%tiaojian:string%#

只需要這樣:

where 1=1  and   #%tiaojian%#

2,sqlmap dal**:

使用**生成工具,上面的sqlmap指令碼將生成下面的dal**:

//////

查詢提醒記錄根據條件

///

///

public

dataset getremindsbywhere(

string

tiaojian  ) 

//end function

從**可以看出,sqlmap指令碼在紅的引數名「tiaojian」 對映成了方法的引數 string tiaojian,而設定引數的方式變成了下面的方式:

cmdinfo.setparametervalue("tiaojian", tiaojian, enumparamtype.replacedtext);

關鍵之處就是多了乙個過載引數:enumparamtype.replacedtext

使用「替換引數」,在引數數量和引數型別不固定的情況下可以非常靈活的使用,反之則不推薦,盡量使用明確型別的引數,避免帶來「sql注入」的安全隱患。

在SQLMAP中使用動態SQL

最近有幾個同事和朋友詢問如何在sqlmap中 拼接字串 因為有時候條件的數量不固定,條件引數型別也不固定,無法寫出 引數名 這樣的sql語句,也就是大家常說的 動態sql 問題。pdf.net資料開發框架在1.0版本就支援這個功能了,而且在sqlmap說明裡面也寫了,但就是沒有人看 這裡舉乙個實際的...

在SQLMAP中使用動態SQL

最近有幾個同事和朋友詢問如何在sqlmap中 拼接字串 因為有時候條件的數量不固定,條件引數型別也不固定,無法寫出 引數名 這樣的sql語句,也就是大家常說的 動態sql 問題。pdf.net資料開發框架在1.0版本就支援這個功能了,而且在sqlmap說明裡面也寫了,但就是沒有人看 這裡舉乙個實際的...

在pandas中使用sql

from pandasql import sqldf 查詢記憶體中的pandas資料框 pysqldf lambda q sqldf q,globals 匯入模組,自帶資料,尋找pandas資料框 from pandasql import sqldf,load meat,load births py...