FSCTF2023-Reverse方向題解WP。學習貼

文章目錄

  • [FSCTF 2023]signin
  • [FSCTF 2023]MINE SWEEPER
  • [FSCTF 2023]Xor
  • [FSCTF 2023]EZRC4
  • [FSCTF 2023]ez_pycxor
  • [FSCTF 2023]Tea_apk
  • [FSCTF 2023]ezcode
  • [FSCTF 2023]ezbroke
  • [FSCTF 2023]rrrrust!!!
  • [FSCTF2023]ezrev(未解決)

[FSCTF 2023]signin

在這里插入圖片描述

UPX殼,用upx -d 文件名脫殼

在這里插入圖片描述

在這里插入圖片描述

簡單的替換,得到flag。


[FSCTF 2023]MINE SWEEPER

在這里插入圖片描述

在這里插入圖片描述

IDA打開得到flag。


[FSCTF 2023]Xor

在這里插入圖片描述

在這里插入圖片描述

與0x12依次異或,

EXP:

enc = b't~suiFz{aM{aMsMwsakM`wdw`awo'
flag = []
for i in range(len(enc)):flag.append(chr(enc[i]^0x12))
print(''.join(flag))# flag{This_is_a_easy_reverse}

[FSCTF 2023]EZRC4

在這里插入圖片描述

在這里插入圖片描述

ezrc4,key和密文已給出,看rc4_crypt

在這里插入圖片描述

沒要魔改,init里面是倆個S盒,直接用腳本解密。

EXP:

def rc4_decrypt(ciphertext, key):# 初始化 S-boxS = list(range(256))j = 0for i in range(256):j = (j + S[i] + key[i % len(key)]) % 256S[i], S[j] = S[j], S[i]# 初始化變量i = j = 0plaintext = []# 解密過程for byte in ciphertext:i = (i + 1) % 256j = (j + S[i]) % 256S[i], S[j] = S[j], S[i]k = S[(S[i] + S[j]) % 256]plaintext.append(byte ^ k)return bytes(plaintext)# 示例用法
encrypted_data = [0xEB,0xD,0x61,0x29,0xBF,0x9B,5,0x22,0xF3,0x32,0x28,0x97,0xE3,0x86,0x4D,0x2D,0x5A,0x2A,0xA3,0x55,0xAA,0xD5,0xB4,0x6C,0x8B,0x51,0xB1]  # 替換成你的密文
encryption_key = b'wanyuanshenwande'  # 替換成你的密鑰decrypted_data = rc4_decrypt(encrypted_data, encryption_key)
print("Decrypted Data:", decrypted_data.decode('utf-8'))# Decrypted Data: flag{I_L0VE_gensh1n_Imp4ct}

[FSCTF 2023]ez_pycxor

pyc文件,找個在線網站反編譯一下,

源代碼:

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.10flag = input('plz input your flag:')
encoded_flag = []
key = 'FUTURESTARS'
ciphertxt = [168,169,185,170,160,157,197,132,226,134,134,145,255,242,130,139,234,140,180,229,179,246,243,181,183,182,249,163,254,189,246,166]
for i in range(len(flag)):encoded_flag.append((ord(flag[i]) ^ 168) + i)
for i in range(len(encoded_flag)):if i % 2 == 0:encoded_flag[i] ^= ord(key[i % 11])if i % 2 == 1:encoded_flag[i] ^= ord(key[i % 11])
if encoded_flag == ciphertxt:print('OK! You have crack it!')return None

簡單的加密,逆向一下,就是根據索引奇偶執行異或先執行和key的循環異或,再減去i異或168、

EXP:

key = 'FUTURESTARS'
ciphertxt = [168, 169, 185, 170, 160, 157, 197, 132, 226, 134, 134, 145, 255, 242, 130, 139, 234, 140, 180, 229, 179,246, 243, 181, 183, 182, 249, 163, 254, 189, 246, 166]
flag = []
for i in range(len(ciphertxt)):flag.append(ciphertxt[i] ^ ord(key[i % 11]))
for i in range(len(ciphertxt)):flag[i] = chr((flag[i] - i) ^ 168)
print("".join(flag))# FSCTF{8a3ccd61ab7ff9e87acb9c9d1}

[FSCTF 2023]Tea_apk

apk文件,用jadx打開,

在這里插入圖片描述

看MainActivity,

在這里插入圖片描述

在這里插入圖片描述

上面是XXTEA的加密過程,這里直接用在線網站解密就好。

在這里插入圖片描述


[FSCTF 2023]ezcode

在這里插入圖片描述

一個py bytecode的題目,之前寫過一篇bytecode反編譯的博客。不太會的可以去看看。

在這里插入圖片描述

這里就是四個函數,func1 func2 func3 還有 encode,

在這里插入圖片描述

這里就是main函數,可以看到一個k,input是 m 對輸入和k進行一個func1的操作,然后對得到的密文c做一個encode的操作,之后進行比較。

在這里插入圖片描述

func1 函數,題做多點就敏感了,這里就是rc4了。func2創造S盒,func3 加密處理。

在這里插入圖片描述

值得注意的是func3,RC4的加密過程魔改了一部分,

在這里插入圖片描述

多了一個key,

在這里插入圖片描述

encode部分就是一個改了碼表的base64編碼

在這里插入圖片描述

所以逆向一下,先對密文進行base64解碼,然后RC4解密,

在這里插入圖片描述

記得轉換為整數。

string = "=.#M?Q??ò\nt?D-v|·"
numeric_list = [ord(char) for char in string]
print(numeric_list)# [61, 46, 35, 77, 216, 81, 239, 157, 242, 10, 116, 194, 208, 173, 118, 124, 183]

最后進行RC4解密。EXP:

def rc4_decrypt(ciphertext, key):# 初始化 S-boxS = list(range(256))j = 0for i in range(256):j = (j + S[i] + key[i % len(key)]) % 256S[i], S[j] = S[j], S[i]# 初始化變量i = j = 0plaintext = []y = 'FSCTF'# 解密過程for byte in ciphertext:i = (i + 1) % 256j = (j + S[i]) % 256S[i], S[j] = S[j], S[i]k = S[(S[i] + S[j]) % 256]plaintext.append(byte ^ k ^ ord(y[i % 5]))return bytes(plaintext)# 示例用法
encrypted_data = [61, 46, 7, 35, 77, 216, 81, 239, 157, 242, 12, 116, 194, 208, 173, 118, 124, 183]  # 替換成你的密文
encryption_key = b'XFFTnT'  # 替換成你的密鑰decrypted_data = rc4_decrypt(encrypted_data, encryption_key)
print("Decrypted Data:", decrypted_data.decode('utf-8'))# Decrypted Data: FSCTF{G00d_j0b!!!}

[FSCTF 2023]ezbroke

在這里插入圖片描述

用WinHex查看一下。

在這里插入圖片描述

PE文件頭和偏移都錯了。修改完保存再次用expinfope查看,發現UPX殼,但是脫殼失敗了。

原來UPX標識也被魔改了。

在這里插入圖片描述

這之后就可以了。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

一個VM虛擬機的題目,

在這里插入圖片描述

code里面是操作碼opcode,下面是三個指令操作,這里都給出了名字,不用自己辨別了。

在這里插入圖片描述

可以看到其實只有一個0x17的操作。

在這里插入圖片描述

還有一個check,enc_flag里面是密文。

在這里插入圖片描述

大致模擬一下出來的指令,可以知道是逐個字節異或。

直接寫EXP:

enc = [0x51, 0x44, 0x54, 0x43, 0x51, 0x6C, 0x4E, 0x27, 0x62, 0x37,0x64, 0x62, 0x74, 0x74, 0x72, 0x64, 0x64, 0x71, 0x62, 0x26,0x26, 0x6E, 0x37, 0x75, 0x65, 0x27, 0x7C, 0x24, 0x37, 0x7A,0x6E, 0x37, 0x67, 0x65, 0x27, 0x63, 0x24, 0x74, 0x63, 0x26,0x27, 0x79, 0x36, 0x36, 0x36, 0x6A, 0x00]
flag = []
for i in range(len(enc)):flag.append(chr(enc[i] ^ 0x17))
print("".join(flag))# FSCTF{Y0u successfu11y br0k3 my pr0t3ct10n!!!}

[FSCTF 2023]rrrrust!!!

在這里插入圖片描述

在這里插入圖片描述

明顯的密文,

在這里插入圖片描述

往下看可以看到比較的地方,

在這里插入圖片描述

al寄存器里面存放的就是 經過加密后的數據,

這里直接用動態調試,輸入32個1,觀察每次加密后的結果。

動態調試的方法就是將jnz修改成jz,這樣才可以看到每次加密的數據。

可以發現是循環異或,和XFFTnT,寫個EXP

enc = [0x3E, 0x2A, 0x27, 0x33, 0x15, 0x03, 0x3D, 0x77, 0x25, 0x64,0x03, 0x67, 0x07, 0x32, 0x76, 0x0B, 0x1C, 0x21, 0x2B, 0x32,0x19, 0x23, 0x5E, 0x26, 0x69, 0x22, 0x3B]
key = 'XFFTnT'
flag = []
for i in range(len(enc)):flag.append(chr(enc[i] ^ ord(key[i%6])))
print(''.join(flag))# flag{We1c0m3_t0_rust_w0r1d}

[FSCTF2023]ezrev(未解決)

這一題暫時沒有解出flag。

大致的思路是,main函數傳入了四個大整數,

func1 函數將其轉化為字符串,func2函數是base64編碼,func3做了一點減法運算。

我也不太清楚我自己哪里有點問題,解出來的flag特別奇怪。暫時先放一下了。o(╥﹏╥)o還要準備考試了。

什么時候解出來再更了,而且這題沒有官方wpo(╥﹏╥)o。

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

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

相關文章

redis-cluster集群模式

Redis-cluster集群 1 Redis3.0引入的分布式存儲方案 2集群由多個node節點組成,redis數據分布在節點之中,在集群之中分為主節點和從節點3集群模式當中,主從一一對應,數據寫入和讀取與主從模式一樣,主負責寫,從只能讀4集群模式自帶哨兵模式,可…

自然資源土地管理法律法規知識競賽這么辦才高端

近些年,全國各地自然資源廳舉辦了土地管理法律法規知識競賽,從我公司承辦的這些賽事來看,傳統的必答題、搶答題、風險題的方式已無法激起現場比賽氣氛,需要更加復雜有趣的環節設置及高端競賽軟件及其配套設備加持才可以讓知識競賽…

Eigen::Matrix 轉 std::vector 親測ok!

std::vector<double> data;for (int kk 0; kk < 24; kk) {data.push_back(kk);}int n 24 / 3;typedef Eigen::Matrix<double, 3, Eigen::Dynamic> MatrixXd;//vector 轉 matrixEigen::Map<Eigen::MatrixXd> result(data.data(), 3, n);//matrix 轉 vect…

什么是交易量價差分析法?anzo Capital一分鐘講明白

交易量價差分析法是一種深入的市場分析方法&#xff0c;它主要探討了價格、價差和交易量之間的相互關系。在此過程中&#xff0c;交易量主要揭示了市場上的交易活動情況&#xff0c;而價差則反映了這些交易的價格變動。 為了更準確地理解這種關系&#xff0c;定義了交易量價差…

21. Spring擴展點之推斷構造方法

簡介 spring自己本身有推斷構造方法的邏輯&#xff0c;但同時也提供了擴展&#xff0c;SmartInstantiationAwareBeanPostProcessor#determineCandidateConstructors&#xff0c;實現該方法就可以自己定制獲取哪個構造器的邏輯&#xff0c;該擴展點spring有一個默認的實現Autow…

單元測試-java.lang.NullPointerException

報錯信息 java.lang.NullPointerException 空指針異常 空對象引用 來源 對Controller層進行單元測試&#xff0c;解決完Spring上下文報錯后繼續報錯。 解決 在測試方法執行前要為字段完成對象的注入&#xff0c;否則就報空指針異常。 測試例子 public class SysUserContr…

前端css粘性布局,頂部吸附效果(position: sticky)

sticky屬性設置 /* 設置粘性布局 */ position: sticky; /* 拖動滾動條&#xff0c;當前元素超出文檔0的位置時&#xff0c;觸發定位效果&#xff08;同級元素位置不會受影響&#xff09; */ top: 0;頁面初始效果 設置前&#xff08;滾動頁面時&#xff0c;標簽欄隨頁面滾動&a…

【深度學習】六大聚類算法快速了解

在機器學習中&#xff0c;無監督學習一直是我們追求的方向&#xff0c;而其中的聚類算法更是發現隱藏數據結構與知識的有效手段。目前如谷歌新聞等很多應用都將聚類算法作為主要的實現手段&#xff0c;它們能利用大量的未標注數據構建強大的主題聚類。本文從最基礎的 K 均值聚類…

【二叉樹進階題目】236. 二叉樹的最近公共祖先,JZ36 二叉搜索樹與雙向鏈表

二叉樹進階題目 236. 二叉樹的最近公共祖先解題思路及實現思路一思路二 JZ36 二叉搜索樹與雙向鏈表描述解題思路及實現 236. 二叉樹的最近公共祖先 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個…

Axios 攔截器 請求攔截器 響應攔截器

請求攔截器 相當于一個關卡&#xff0c;如果滿足條件就放行請求&#xff0c;不滿足就攔截 響應攔截器 在處理結果之前&#xff0c;先對結果進行預處理&#xff0c;比如&#xff1a;對數據進行一下格式化的處理 全局請求攔截器 axios.interceptors.request.use(config > { /…

SeaTunnel及SeaTunnel Web部署指南(小白版)

現在你能搜索到的SeaTunnel的安裝。部署基本都有坑&#xff0c;官網的文檔也是見到到相當于沒有&#xff0c;基本很難找到一個適合新手小白第一次上手就能成功安裝部署的版本&#xff0c;于是就有了這個部署指南的分享&#xff0c;小主已經把可能遇到的坑都填過了&#xff0c;希…

Web前端—移動Web第五天(媒體查詢、Bootstrap、綜合案例-alloyTeam)

版本說明 當前版本號[20231122]。 版本修改說明20231122初版 目錄 文章目錄 版本說明目錄移動 Web 第五天01-媒體查詢基本寫法書寫順序案例-左側隱藏媒體查詢-完整寫法關鍵詞 / 邏輯操作符媒體類型媒體特性 媒體查詢-外部CSS 02-Bootstrap簡介使用步驟下載使用 柵格系統全局…

PTA 六度空間

“六度空間”理論又稱作“六度分隔&#xff08;Six Degrees of Separation&#xff09;”理論。這個理論可以通俗地闡述為&#xff1a;“你和任何一個陌生人之間所間隔的人不會超過六個&#xff0c;也就是說&#xff0c;最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示…

大白話DDD(DDD黑話終結者)

大白話DDD&#xff08;DDD黑話終結者&#xff09; 一、吐槽的話 相信聽過DDD的人有很大一部分都不知道這玩意具體是干嘛的&#xff0c;甚至覺得它有那么一些虛無縹緲。原因之一是但凡講DDD的&#xff0c;都是一堆特別高大上的概念&#xff0c;然后冠之以一堆讓人看不懂的解釋…

Python教程73:Pandas中一維數組Series學習

創建一維數據類型Series dataNone 要轉化為Series的數據(也可用dict直接設置行索引) 若是標量則必須設置索引,該值會重復,來匹配索引的長度 indexNone 設置行索引 dtypeNone 設置數據類型(使用numpy數據類型) nameNone 設置Series的name屬性 copyFalse 不復制 (當data為ndarray…

Centos中的解壓和壓縮指令

在CentOS 7系統中&#xff0c;可以使用多種命令進行文件壓縮和解壓縮操作。以下是常見的文件壓縮和解壓命令及其用法的詳解&#xff1a; 1.tar&#xff1a;tar命令用于打包文件或目錄&#xff0c;并可選地壓縮為tar壓縮包。 創建tar壓縮包&#xff1a;tar -cvf archive.tar f…

【深度學習】神經網絡術語:Epoch、Batch Size和迭代

batchsize&#xff1a;中文翻譯為批大小&#xff08;批尺寸&#xff09;。 簡單點說&#xff0c;批量大小將決定我們一次訓練的樣本數目。 batch_size將影響到模型的優化程度和速度。 為什么需要有 Batch_Size : batchsize 的正確選擇是為了在內存效率和內存容量之間尋找最…

Postgresql源碼(116)提升子查詢案例分析

0 總結 對于SQL&#xff1a;select * from student, (select * from score where sno > 2) s where student.sno s.sno; pullup在pull_up_subqueries函數內遞歸完成&#xff0c;分幾步&#xff1a; 將內層rte score追加到上層rtbable中&#xff1a;rte1是student、rte2帶…

nginx編譯安裝

1.下載nginx&#xff1a; 地址&#xff1a;http://nginx.org/en/download.html 2.安裝依賴 安裝gcc: yum install -y gcc安裝pcre庫 yum install -y pcre pcre-devel安裝zlib庫&#xff1a; yum install -y zlib zlib-devel3.安裝nginx ./configure --prefix/usr/local/ngi…

Spark SQL將Hive表中的數據寫入到MySQL數據庫中

import org.apache.spark.sql.SparkSessionobject HiveToMySQL {def main(args: Array[String]): Unit {// 創建SparkSessionval spark SparkSession.builder().appName("HiveToMySQL").enableHiveSupport().getOrCreate()// 讀取Hive表數據val hiveDF spark.tabl…