06-加密算法

加密算法

  • 一、前言知識
    • 1、加密解密
    • 2、MD5(最常見)
    • 3、SHA
    • 4、進制
    • 5、時間戳
    • 6、URL編碼
    • 7、base64編碼
    • 8、unescape編碼
    • 9、AES加密
    • 10、DES(類似于base64)
  • 二、常見加密形式算法解析
  • 三、演示案例
      • 1、某 CTF 比賽題目解析
      • 2、某 CMS 密碼加密解密
      • 3、某 URL 加密地址的漏洞測試
      • 4、某實際應用 URL 地址參數加密
  • 四、涉及資源

一、前言知識

前言:在滲透測試中,常見的密碼等敏感信息會采用加密處理,其中作為安全測試人員必須要了解常見的加密方式,才能為后續的安全測試做好準備,本次課程將講解各種加密編碼等知識,便于后期的學習和發展。

1、加密解密

加密軟件

在這里插入圖片描述

解密軟件

https://www.cmd5.com/

在這里插入圖片描述

#常見加密編碼等算法解析
MD5,SHA,ASC,進制,時間戳,URL,BASE64,Unescape,AES,DES等#常見加密形式算法解析
直接加密,帶salt,帶密碼,帶偏移,帶位數,帶模式,帶干擾,自定義組合等#常見解密方式(針對)
枚舉,自定義逆向算法,可逆向#了解常規加密算法的特性
長度位數,字符規律,代碼分析,搜索獲取等

2、MD5(最常見)

#含義:
MD5信息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用于確保信息傳輸完整一致。#分類
十六位/三十二位MD5(密文位數固定不變)
如:數據庫密碼 #不可逆
不能直接的逆向,網上的解密不是從密文到明文的過程,而是枚舉,如123的解密,是舉例:1,10,11,12,13…121,122,123來匹配 

3、SHA

#含義
安全散列算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列算法。能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對應到不同字符串的機率很高。#密文
為0-9,a-z的數字組合,有四種不同的加密方式對于不同的長度。

4、進制

二進制,十進制,十六進制

5、時間戳

#含義
時間戳(英文為Unix epoch, Unix time, POSIX time 或 Unix timestamp)UNIX時間戳的0按照ISO 8601規范為 :1970-01-01T00:00:00Z.一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。#時間戳通常是用在用戶的注冊、登錄、注銷等情況

在線轉換工具:https://tool.lu/timestamp/

在這里插入圖片描述

6、URL編碼

https://www.cnblogs.com/cxygg/p/9278542.html

序號特殊字符含義十六進制值
1.+URL 中+號表示空格%2B
2.空格URL中的空格可以用+號或者編碼%20
3./分隔目錄和子目錄%2F
4.分隔實際的 URL 和參數%3F
5.%指定特殊字符%25
6.#表示書簽%23
7.&URL 中指定的參數間的分隔符%26
8.=URL 中指定參數的值%3D
  • 搜索PHP的網站。

在這里插入圖片描述

  • 加空格1=1。

在這里插入圖片描述

  • 變為%201=1。

在這里插入圖片描述

  • #%20被成為URL編碼。
#含義
url編碼是一種瀏覽器用來打包表單輸入的格式。瀏覽器從表單中獲取所有的name和其中的值 ,將它們以name/value參數編碼(移去那些不能傳送的字符,將數據排行等等)作為URL的一部分或者分離地發給服務器。#空格的轉化#為什么之前的轉化只轉化空格,沒有轉化1=1?注意:二次轉碼---由于空格的特殊的含義,它會進行轉化,而1轉化為%31的化網站會以為沒有進行轉碼的明文,會對%31再進行一次轉碼—-%25%33%31----看見%31可能會涉及二次編碼。瀏覽器之后解密一次,二次編碼多在自己關鍵字的繞過方面涉及

7、base64編碼

在這里插入圖片描述
在這里插入圖片描述

#含義
Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一,基于64個可打印字符來表示二進制數據的方法。由于輸出內容中包括兩個以上“符號類”字符(+, /, =),不同的應用場景又分別研制了Base64的各種“變種”。為統一和規范化Base64的輸出,Base62x被視為無符號化的改進版本。#規律
明文有多長,密文相對有多長,0-9,a-z,且區分大小寫,經常在密文后面出現等號= 
  • base64編碼的特點:隨著編碼的文本增加而增加、由大小寫和數字組成且字符結尾一般有兩個等號。
  • 一般在代碼中為了安全會使用base64進行編碼。

8、unescape編碼

在這里插入圖片描述

JavaScript unescape() 函數可對通過 escape() 編碼的字符串進行解碼。
unescape(string),該函數的工作原理是這樣的:通過找到形式為 %xx 和 %uxxxx 的字符序列(x 表示十六進制的數字),用 Unicode 字符 \u00xx 和 \uxxxx 替換這樣的字符序列進行解碼
  • 和URL編碼有點像。

  • 特點:一般是%U+四個數字對應著兩個字符、主要運用于網站web應用。

    • 特點1—以%u開始加上四位的數字。

在這里插入圖片描述

  • 特點2—兩個字符進行轉換(最后一個除外)。

在這里插入圖片描述

9、AES加密

#密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,在一個4×4的字節矩陣上運作,這個矩陣又稱為“體(state)”,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個Byte)。
  • aes在逐漸的取代md5值、在解密的過程中一定要知道密碼和偏移量不然是解不出來的。
  • 在線工具:http://tool.chacuo.net/cryptaes

在這里插入圖片描述

在這里插入圖片描述

  • 舉例:明文123456,密碼admin,拼接后加密,偏移量不是開始到結尾,而是從一個部分進行加密 。

在這里插入圖片描述

  • 將加密的用base64解密—解密為亂碼多半為aes加密—有時會出現斜杠

在這里插入圖片描述

10、DES(類似于base64)

	des對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的密鑰,信息的發送者和信息的接收者在進行信息的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼),是一種對稱加密算法,用一個 56 位的密鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然后將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續下去,但最后一個循環不交換。
  • 特點:明文的長度和密文成正比,有時會出現加號

在這里插入圖片描述

  • 網頁加密,工具解密—出現亂碼(why?–不同平臺參數不同,用同一平臺)。

在這里插入圖片描述

二、常見加密形式算法解析

1.  直接加密----md5,sha,進制,時間戳,base64,unescape(除ase,des外)
2.  帶 salt---aes
3.  帶密碼---aes,des
4.  帶偏移---aes
5.  帶位數,
6.  帶模式,
7.  帶干擾,
8.  自定義組合。

常見解密方式(針對)

1.  枚舉,
2.  自定義逆向算法,
3.  可逆向。

了解常規加密算法的特性

1.  長度位數,
2.  字符規律,
3.  代碼分析,
4.  搜索獲取等,

三、演示案例

1、某 CTF 比賽題目解析

腳本自定義算法組合逆向

在這里插入圖片描述

給了一串密文。

fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

下載文件。

在這里插入圖片描述

解壓出來得到一個index.txt的文件。

在這里插入圖片描述

function encrypt($data,$key)
{$key = md5('ISCC');$x = 0;$len = strlen($data);$klen = strlen($key);for ($i=0; $i < $len; $i++) {if ($x == $klen){$x = 0;}$char .= $key[$x]; 				//把key里面的第一個字符拼接到char里面$x+=1;							//x執行一次循環加一次1 有多少個字符串加多少次print_r("88:",$key[$x]);}echo $char."<br>";
//傳入有多少個字符串就取前多少個cmd5字符串賦值給charfor ($i=0; $i < $len; $i++) {//取第data里面的第i個數據加上char里面的第i個數據 把他們的ord()ASCII值相加取余128$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);}print($str);//base64位加密return base64_encode($str);
}

#加密涉及 — MD5,ASCII,base64。

#解密 — 先base64,再ASCII,再MD5。

#解密腳本
function jiemi($str1){echo "初始值:".$str1."<br>";$str=base64_decode($str1);$lens=strlen($str);$j=0;echo "經過base64解碼后:".$str."<br>";echo "長度:".$lens."<hr>";$key1 = md5('ISCC');$key2 = md5('ISCC');$key=$key1.$key2;// for($j=0;$j<$lens;$j++){//     //$ord_str=ord($str[i]);//     echo $str[j];// }$jie_str="";for ($i=0; $i<$lens; $i++) {echo $i;echo "第一次字符串加密".$str[$i]."<br>";// @$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);$str1=ord($str[$i]);echo "經過ord轉換成ASCII值:".$str1."<br>";if($str1<128){$str1=$str1+128;}else if($str>128){$str1=$str+128;}else if($str>=256){$str1=256+$str;}echo "經過128取余逆向:".$str1."<br>";$str2=$str1-ord($key[$i]);echo "減去CMD5附加的值:".$str2.":".$key[$i]."<br>";$str3=chr($str2);echo "emm:".$str3."<br>";$jie_str=$jie_str.$str3;//$jie_str=$str3;}print_r($jie_str);
}

2、某 CMS 密碼加密解密

MD5+salt
部分CMS密碼加密形式 - wp、dz等
  1. 登錄搭建的discuz論壇的數據庫。

在這里插入圖片描述

  1. 查看數據庫密碼—進入數據庫,查詢sdb_members表的內容。

在這里插入圖片描述

  1. 解密查詢—普通的MD5無法解密。

在這里插入圖片描述

  1. 查找salt。

在這里插入圖片描述
在這里插入圖片描述

3、某 URL 加密地址的漏洞測試

- AES+Base64+自定義
- 觀察參數值加密字符串,下載源代碼分析,函數定義AES加密,涉及模式CBC,128位,加密密碼,偏移量,兩次base64減去常規一次,填充模式。(mozhe)

在這里插入圖片描述
在這里插入圖片描述

  1. 點擊訪問。

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

  1. 鑄劍掃描 — aes加密涉及—密碼,偏移量(從網站文件中尋找)。

在這里插入圖片描述

  1. 掃到一個地址。

在這里插入圖片描述

  1. 打開URL。

在這里插入圖片描述

  1. 下載相關文件 — 為解密過程,因為網站的URL編碼加密了,腳本將URL解密,因此是解密過程。

    =>list.php
    在這里插入圖片描述

  2. 結合aes分析結果 — 加密模式cbc,數據塊128位。

在這里插入圖片描述

  1. 初始化加密的緩沖區 — mcrypt_generic_init函數的參數 — 描述符,密碼,偏移量。

在這里插入圖片描述

  1. 兩次Base64解密 — aes以base64輸出,因此還需要再解密一次。

在這里插入圖片描述

  1. 觀察參數值加密字符串 — 前面是密文,后面是明文,無法進行注入 — 要將前面解密才能進行注入。

在這里插入圖片描述

  1. 解密密文— ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09。

    • base64解密。

在這里插入圖片描述

- 網絡解密平臺解密。

在這里插入圖片描述
在這里插入圖片描述

  1. 再次分析代碼—過濾,密碼錯就跳轉主頁,對就返回1,將_mozhe過濾—因此注入為: 1 and 1=1_mozhe。

  2. 修改注入,再進行加密。
    在這里插入圖片描述

在這里插入圖片描述

4、某實際應用 URL 地址參數加密

搜索特定關鍵字加密字符串
  1. 搜素特定關鍵字加密字符串—搜索id=MQ==的網站。

在這里插入圖片描述

  1. 解密為 — id=1的網站。

在這里插入圖片描述

  1. 要注入的思路 ---- 注入的語句也應該加密:解密 - 注入 - 加密(由于加密工具掃不了)。

四、涉及資源

墨者學院:https://www.mozhe.cn

md5解密:https://www.cmd5.com

ASE加解密:http://tool.chacuo.net/cryptaes

Bufku:https://ctf.bugku.com/challenges

超級加解密轉換工具V2.1 綠色免費版:https://www.cr173.com/soft/21692.html

DiscuzX:https://gitee.com/ComsenzDiscuz/DiscuzX

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爆肝整理,Python自動化測試-Pytest參數化實戰封裝,一篇打通...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 參數化&#xff1…

uniapp案例30余種實戰項目

uniapp案例30余種實戰項目 mpvue框架仿滴滴出行didi-masteruni-app自定義導航欄title-customvue-mpvue-ChatRobot聊天機器人vue-mpvue-ChatRobot-master一款播課類小程序, 基于 mpvue 構建mp-podcast-mpvue-mastermpVue高仿美團小程序教程mpvue-meituan-masteruni-app 二維碼生…

【RS485 - 為什么要接收端計算時間偏移量】

我以前一直以為計算機等的信號傳輸速率都是非常快的&#xff0c;不用計算時間差。 然而在實際應用中發現信息是需要傳輸時間的&#xff0c;而這些時間somehow是可以計算的。 前提信息 波特率 9600&#xff1b; 控制器和執行器通過RS485通信&#xff1b; 控制器發出同步的命令…

spring框架,以及和spring框架相關的Java面試題和spring ioc的注入方式

目錄 一.spring來源&#xff0c;以及介紹 1.spring誕生的背景 2.spring框架 介紹 3.spring框架在使用中的優點以及不足 3.1優點 3.2不足 3.3總結 4.為什么要使用spring 二.將spring框架部署在IDEA中 1.替換pom.xml 2.構建spring所需要的xml文件 三.spring的三種注入…

網絡通信原理IP頭部格式(第四十二課)

字段作用解析:1)版本: 指的IP地址的版本 (IPv4 或 IPV6)2)首部長度: 次數據包的首部長度一共是多少,沒有加可選項3)優先級與服務類型:表示****數據包是否需要優選傳遞4)總長度: 表示的是整個數據包的大小,也就****是首部+數據5)標識符、標志、段偏移量:的作用將拆開的…

無涯教程-Perl - syswrite函數

描述 此函數嘗試將SCALAR中的LENGTH個字節寫入與FILEHANDLE相關的文件。如果指定了OFFSET,則從提供的SCALAR中的OFFSET字節中讀取信息。該函數使用C /操作系統的write()函數,該函數繞過普通緩沖。 語法 以下是此函數的簡單語法- syswrite FILEHANDLE, SCALAR, LENGTH, OFFS…

draw.io導出矢量圖到word報錯text is not svg - cannot display

先參考https://blog.csdn.net/a625750076/article/details/126384831 如果不行&#xff0c;可能是轉存的問題 解決方法&#xff1a;直接在draw.io上操作 第一步 第二步 然后再word中粘貼&#xff0c;依舊是矢量圖哦&#xff01;

Ajax入門+aixos+HTTP協議

一.Ajax入門 概念:AJAX是瀏覽器與服務器進行數據通信的技術 axios使用: 引入axios.js使用axios函數:傳入配置對象,再用.then回調函數接受結果,并做后續處理 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>01.axios使用…

面試題. 零矩陣

編寫一種算法&#xff0c;若M N矩陣中某個元素為0&#xff0c;則將其所在的行與列清零。 示例 1&#xff1a; 輸入&#xff1a; [[1,1,1],[1,0,1],[1,1,1] ] 輸出&#xff1a; [[1,0,1],[0,0,0],[1,0,1] ] 示例 2&#xff1a; 輸入&#xff1a; [[0,1,2,0],[3,4,5,2],[1,3…

獲取excel中的圖片(包含wps中嵌入單元格圖片)

項目中有excel導入功能,并且需要導入excel中的圖片;模板如圖: 已知office中插入的圖片為浮動形式;如圖: wps中可以插入浮動圖片,也可以插入嵌入單元格圖片;如圖: 并且在wps嵌入單元格形式的圖片可以看到使用的是公式;如圖: 問題來了,如何獲取圖片 并且將圖片與單元格進行對應 …

Cat(3):客戶端集成—簡單案例

接下來編寫一個簡單的springboot與Cat整合的案例 1 新建springboot項目 首先創建一個Spring Boot的初始化工程。只需要勾選web依賴即可。 2 添加 Maven 添加依賴 <dependency><groupId>com.dianping.cat</groupId><artifactId>cat-client</artifa…

UE4/5Niagara粒子特效學習(使用UE5.1,適合新手)

目錄 創建空模板 創建粒子 粒子的基礎屬性 粒子的生命周期 顏色 大小設置 生成的位置 Skeletal Mesh Location的效果&#xff1a; Shape Location 添加速度 添加Noise力場 在生成中添加&#xff1a; 效果&#xff1a; ?編輯 在更新中添加&#xff1a; 效果&…

機器學習線性代數基礎

本文是斯坦福大學CS 229機器學習課程的基礎材料&#xff0c;原始文件下載 原文作者&#xff1a;Zico Kolter&#xff0c;修改&#xff1a;Chuong Do&#xff0c; Tengyu Ma 翻譯&#xff1a;黃海廣 備注&#xff1a;請關注github的更新&#xff0c;線性代數和概率論已經更新完畢…

簡述 TCP 和 UDP 的區別以及優缺點和使用場景?

一、TCP與UDP區別總結&#xff1a; 1、TCP面向連接&#xff08;如打電話要先撥號建立連接&#xff09;;UDP是無連接的&#xff0c;即發送數據之前不需要建立連接 2、TCP提供可靠的服務。也就是說&#xff0c;通過TCP連接傳送的數據&#xff0c;無差錯&#xff0c;不丟失&…

SQL Injection

SQL Injection 就是通過把惡意的sql命令插入web表單遞交給服務器&#xff0c;或者輸入域名或頁面請求的查詢字符串遞交到服務器&#xff0c;達到欺騙服務器&#xff0c;讓服務器執行這些惡意的sql命令&#xff0c;從而讓攻擊者&#xff0c;可以繞過一些機制&#xff0c;達到直…

Vue使用element-ui

main.js配置 //引入Vue import Vue from vue //引入App import App from ./App.vue//完整引入 //引入ElementUI組件庫 // import ElementUI from element-ui; //引入ElementUI全部樣式 // import element-ui/lib/theme-chalk/index.css;//按需引入 import { Button,Row,DatePi…

記一次前端直接上傳圖片到oss報錯

前端直接上傳圖片到阿里云oss,相關過程官網和網上資料已經很詳細&#xff0c;不做贅述。 但這個過程比較復雜&#xff0c;前后端對接過程中很容易出現報錯&#xff0c;這里遇到了以下報錯&#xff0c;不容易排查。 請求顯示net::ERR_NAME_NOT_RESOLVED錯誤&#xff0c;catch輸…

如何在windows電腦安裝多個tomcat服務器和亂碼問題

前提條件安裝jdk 以17版本為例&#xff0c;將jdk8卸載干凈 1.首先進入tomcat官網下載 tomcat網址 這里下載tomcat10為例子 1.1 這里選擇方式一 下載解壓版 2.解壓后拷貝三份 分別命名為 8081、 8082、 8083 3.分別對每個tomcat執行以下操作 3.1 找到tomcat所在webapps文…

Flask框架-配置日志(1):flask使用日志

一、項目結構 study_flask --| apps/ --| __init__.py --| base/ --| logger.py --| __init__.py --| app.py 二、配置日志功能 1、base/logger.py import os import logging from datetime import datetime,date,timedelta from logging.handlers import RotatingFileHandl…

python 開啟5個進程處理list數據

要在 Python 中開啟多個進程來處理列表數據&#xff0c;你可以使用 multiprocessing 模塊。下面是一個開啟5個進程處理列表數據的示例代碼&#xff1a; python import multiprocessingdef process_item(item):# 在這里處理每個列表項的邏輯print(f"Processing item: {ite…