Re-攻防世界

easyEZbaby_app

Jadx

這個文件一般是窗口界面,點擊中間的一般就是主函數

Obj1是用戶名,obj2是密碼

用戶名

????public?boolean?checkUsername(String?str)?{
????????if?(str !=?null)?{
????????????try?{
????????????????if?(str.length()?!=?0?&&?str !=?null)?{
????????????????????MessageDigest messageDigest =?MessageDigest.getInstance("MD5");
????????????????????messageDigest.reset();
????????????????????messageDigest.update("zhishixuebao".getBytes());
????????????????????String?hexString =?toHexString(messageDigest.digest(), "");
????????????????????StringBuilder?sb =?new?StringBuilder();
????????????????????for?(int?i =?0; i <?hexString.length(); i +=?2)?{
????????????????????????sb.append(hexString.charAt(i));
????????????????????}
????????????????????String?sb2 =?sb.toString();
????????????????????return?(sb2).equals(str);
????????????????}
????????????????return?false;
????????????}?catch?(NoSuchAlgorithmException e)?{
????????????????e.printStackTrace();
????????????}
????????}
????????return?false;
????}

這部分是MD5加密,加密的內容是 ?"zhishixuebao"

MD5解密腳本

import hashlib
flag='zhishixuebao'
x = hashlib.md5(flag.encode("utf8"))#md5和類似的,就講sha1更換就行
y = x.hexdigest()
print(y)

7da5fec345fecde5fdcd641f68e0b6d1

for循環,i+=2

p='7da5fec345fecde5fdcd641f68e0b6d1'
flag=''
for i in range(0,len(p),2):
????flag+=p[i]
print(flag)

7afc4fcefc616ebd

來看密碼

????public?boolean?checkPass(String?str)?{
????????if?(str !=?null)?{
????????????char[]?charArray =?str.toCharArray();
????????????if?(charArray.length !=?15)?{
????????????????return?false;
????????????}
????????????for?(int?i =?0; i <?charArray.length; i++)?{
????????????????charArray[i]?=?(char)?((((255?-?i)?+?2)?-?98)?-?charArray[i]);
????????????????if?(charArray[i]?!=?'0'?||?i >=?15)?{
????????????????????return?false;
????????????????}
????????????}
????????????return?true;
????????}
????????return?false;
????}

循環15次,通過一系列的數學運算和字符轉換來生成flag

a=''

for i in range(15):

???a+=chr(((255 - i) + 2) - 98-48)

print(a)

得到

onmlkjihgfedcba

那么flag就是用戶名+密碼

flag{7afc4fcefc616ebdonmlkjihgfedcba}

Ereere

Shift+f12查找字符串

定位到主函數

跟進sub_400864()函數,看到256,想到rc4

進入aFlag1233213211

回到主函數再跟進sub_400550

進aZyxwvutsrqponm發現base64密碼表

主函數

想將rc4進行了加密然后base64解密然后與ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ== 相比,如果相同就輸出flag的值

那么逆向的思路是

將base64進行換表之后ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ==

進行base64解密 然后再進行RC4解密就能得到flag?

import base64

flag = ""

key = "ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ=="

string1 = "ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz/+9876543210" ?# string1表示更換后的碼表

string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ?# string2表示原始碼表

print("Base64還原: ", key.translate(str.maketrans(string1, string2))) ??# 將 key 還原成初始碼表加密后的結果

Str = base64.b64decode(key.translate(str.maketrans(string1, string2))) ?# Base64解密,bytes型

print("Base64解密: ", Str)

byte_4A0860 = []

aFlag1233213211 = "flag{123321321123badbeef012}"

# rc4_init

for i in range(256):

????byte_4A0860.append(i)

v4 = 0

v3 = 0

for j in range(256):

????v5 = byte_4A0860[j]

????v3 = (v5 + v3 + ord(aFlag1233213211[int(j % len(aFlag1233213211))])) & 0xff

????byte_4A0860[j] = byte_4A0860[v3]

????byte_4A0860[v3] = v5

????v4 = v4 + 1

????if v4 >= len(aFlag1233213211):

????????v4 = 0

print("s_box:", end=" ")

for j in range(256):

????print(byte_4A0860[j], end=" ")

print()

# rc4_crypt

v4 = 0

v3 = 0

for k in range(len(Str)):

????v3 = (v3 + 1) & 0xff

????v4 = (byte_4A0860[v3] + v4) & 0xff

????v5 = byte_4A0860[v3]

????byte_4A0860[v3] = byte_4A0860[v4]

????byte_4A0860[v4] = v5

????flag += chr(Str[k] ^ byte_4A0860[(byte_4A0860[v3] + byte_4A0860[v4]) & 0xff])

print(flag)

flag{RC_f0ur_And_Base_s1xty_f0ur_Encrypt_!}

Mine-

下載完是一個exe程序,運行一下

拖到ida看main函數

這段代碼是一個用C++編寫的掃雷游戲程序,或許掃完了就能拿到flag?

ans:存儲游戲結束時顯示的字符串。

還有rand函數和srand函數的調用,說明這里游戲地圖是隨機生成的,所以不會根據輸入的點位來解密或者生成flag

修改rip

右鍵modify

F9運行

7ii3VecVgof3r6ssiP2g7E3HqwqhM

flag{h4pp4-M1n3-G4m3}

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

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

相關文章

矩陣題解——搜索二維矩陣 II【LeetCode】

240. 搜索二維矩陣 II 1.1 核心思想 問題描述&#xff1a;給定一個 m x n 的二維矩陣&#xff0c;矩陣的每一行從左到右遞增&#xff0c;每一列從上到下遞增。判斷目標值 target 是否存在于矩陣中。解決思路&#xff1a; 從矩陣的右上角&#xff08;或左下角&#xff09;開始搜…

dockerfile文件詳解之基礎語法

dockerfile文件詳解之基礎語法 一般而言 Dockerfile 可以分為4個部分 &#xff08;1&#xff09;基礎鏡像信息&#xff0c; &#xff08;2&#xff09;維護者信息 &#xff08;3&#xff09;鏡像操作命令 &#xff08;4&#xff09;啟動時執行指令 1-注釋 用 # 來進行注…

WebFuture:獨立一級域名nginx取消配置Secure屬性的問題

問題分析&#xff1a; 部分站群站點使用了獨立一級域名&#xff0c;但是前臺問卷調查等模塊無法提交&#xff0c;排查是由于主站啟用了https&#xff0c;配置了cookies的Secure屬性是true&#xff0c;但是子站的獨立一級域名沒有使用https&#xff0c;所以瀏覽器不能寫入cooki…

【網站內容安全檢測】之3:獲取所有外部域名訪問后圖像

Go語言調用Chrome瀏覽器去進行截圖的操作&#xff0c;對電腦的性能要求比較高&#xff0c;所以速度比較有限&#xff0c;但是目前來看這種方式可以最佳的去獲取網頁加載后的結果。 main.go package mainimport ("context""errors""flag""…

華曦達港股IPO遞表,AI Home生態構建智能生活新藍圖

在智能家居逐漸普及的當下&#xff0c;華曦達打造的AI Home生態為用戶提供了更智能、便捷的生活解決方案&#xff0c;在行業中展現出獨特優勢。 華曦達AI Home生態由AI Home系統平臺、AI Home基礎設施、AI Home設備以及可連接外部設備的開放式設備矩陣構成&#xff0c;是一個開…

java+vue+SpringBoo智慧農業專家遠程指導系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.…

免費AI助手工具深度測評:Claude4本地化部署與實戰應用指南

免費AI助手工具深度測評&#xff1a;Claude4本地化部署與實戰應用指南 AI無限對話免費Rovo工具Claude4碾壓cursor和augment 前言 在AI工具日益普及的今天&#xff0c;大多數高質量的AI助手都需要付費訂閱或有使用限制。然而&#xff0c;最近發現了一款基于Claude 4的免費AI助手…

MCP瀏覽器工具:playwright、chrome-mcp

參考&#xff1a; https://github.com/microsoft/playwright-mcp https://github.com/hangwin/mcp-chrome chrome-mcp安裝需要額外安裝成瀏覽器插件 用cherrystudio v1.4.5測試 mcp配置&#xff1a; "chrome-mcp-server": {"name": "chrome-mcp-serve…

水利水電安全員考試不同等級的考試內容有哪些區別?

水利水電安全員考試一般分為企業主要負責人&#xff08;A 類&#xff09;、項目負責人&#xff08;B 類&#xff09;和專職安全生產管理人員&#xff08;C 類&#xff09;三個等級。不同等級的考試內容都包括安全生產知識和管理能力兩部分&#xff0c;但具體的側重點有所不同。…

關于USB模式的一些內容(附USB接口顏色釋義圖)

今天在處理工作中的事情的時候,突然有個產品的小伙伴來問關于USB的事情,順便給她簡單說了下。USB接口模式主要包括以下幾種:Host(主機模式)、Device(設備模式)、OTG(On-The-Go),以及較少使用的Accessory模式。以下是對這些模式的詳細說明、區別差異及應用場景: 1. H…

React中的ErrorBoundary

文章目錄 前言? 一、使用類組件實現 ErrorBoundary&#xff08;官方推薦方式&#xff09;用法示例&#xff1a; ? 二、用函數組件實現 ErrorBoundary&#xff08;借助 Hook react-error-boundary 庫&#xff09;1. 安裝 react-error-boundary2. 使用 ErrorBoundary 組件&…

歷年西北工業大學計算機保研上機真題

西北工業大學計算機保研上機真題 在線測評鏈接&#xff1a;https://pgcode.cn/problem 海倫公式求面積 題目描述 給定三角形的三條邊長 a a a, b b b, c c c&#xff0c;先判斷這三條邊是否能構成一個三角形。 如果不能構成三角形&#xff0c;輸出 N a N NaN NaN&#…

掃地機產品認證--黑名單制裁公司能否拿到美國產品準入許可(FCC認證)

掃地機產品認證–黑名單制裁公司能否拿到美國產品準入許可(FCC認證) 文章目錄 掃地機產品認證--黑名單制裁公司能否拿到美國產品準入許可(FCC認證)?? **一、核心限制規則**?? **二、企業需滿足的額外條件**??? **三、黑名單企業的應對可能性**?? **四、總結**產品認證…

數據結構復習2

第二章 線性表 2.1線性表的定義和基本操作 線性表&#xff1a;一種邏輯結構&#xff0c;表示數據元素之間的一對一線性關系&#xff08;如數組、鏈表、棧、隊列等&#xff09;。 2.1.1線性表的定義 線性表是具有相同數據類型的n(n>0)個數據元素的有限序列。 (其中n為表長…

空間轉錄組benchmark 相關 讀完scGPT spatial 和 空間單細胞基因乳房細胞數據集文章之后

文章目錄 ? 空間轉錄組測序方式總體劃分&#x1f9ec; 成像型空間轉錄組&#xff08;Imaging-based ST&#xff09;原理&#xff1a;技術代表 & 特點&#xff1a;優點&#xff1a;局限&#xff1a; &#x1f9ec; 測序型空間轉錄組&#xff08;Sequencing-based ST&#x…

清理華為云服務器內存使用率

這里寫自定義目錄標題 一、正確終止進程&#xff1a;不要帶尖括號二、看清楚誰“真吃”了內存三、臨時清掉緩存&#xff08;謹慎用&#xff09;四、長期優化1. 給系統加個 Swap2. 調整 MySQL 內存配置3. 水平&#xff0f;垂直擴容4. 告警 總結與下一步 華為云的“內存使用率”默…

Go 語言中的 package 和 go modules

1、package 的定義和導入 在任何大型軟件項目中&#xff0c;代碼的組織和管理都是至關重要的。Go 語言通過 包&#xff08;Package&#xff09; 的概念來解決這個問題&#xff0c;它不僅是代碼組織的基礎&#xff0c;也是代碼復用的關鍵。本文將深入探討 Go 語言中包的定義、規…

C#語言入門-task4 :C#語言的高級應用

C# 作為一門現代化、面向對象的編程語言&#xff0c;在企業級應用、游戲開發、移動應用、云計算等領域有著廣泛的應用。以下是 C# 語言的一些高級應用場景和技術方向&#xff1a; 一、高級語言特性與編程范式 1. 異步編程&#xff08;Async/Await&#xff09; 應用場景&…

FastAPI vs Flask vs Django:Python Web框架全面對比

Python 作為最受歡迎的編程語言之一&#xff0c;其 Web 開發生態極為豐富。FastAPI、Flask 和 Django 是當前主流的三大 Python Web 框架&#xff0c;各有千秋。本文將從架構設計、開發效率、性能表現、生態支持、適用場景等方面&#xff0c;全面對比這三大框架&#xff0c;幫助…

如何從零開始掌握Pandas的DataFrame使用

視頻演示 如何通過實例學習Pandas DataFrame的創建與數據訪問 &#x1f9e9; 理解 Pandas DataFrame&#xff1a;數據分析的核心結構 Pandas 是 Python 中用于數據分析與處理的主力庫&#xff0c;而 DataFrame 是 Pandas 最常用的二維表格數據結構。我們可以將其想象成一個 Ex…