CTF_RE學習

學了一個 map()函數的使用?

import base64rawData = "e3nifIH9b_C@n@dH"
target = list(map(ord, rawData))
# map 函數將 rawData 中的每個字符傳遞給 ord 函數。ord 函數返回給定字符的 Unicode 碼點
print(target)
# 打印 map 對象的內存地址,故須轉換為列表for i in range(len(target)):target[i] -= i
print(list(map(chr,target)))
#['e', '2', 'l', 'f', 'b', 'D', 'B', '2', 'Z', 'V', '9', '5', 'b', '3', 'V', '9']
src = ''.join(map(chr, target))
print(src)
# e2lfbDB2ZV95b3V9
decoded_data = base64.b64decode(src)print(decoded_data)

大小寫轉換

import string
key = "ADSFKNDCLS".lower()
print(key)
# adsfkndcls
enc='abcdefg'
print(enc.upper())
# ABCDEFG
charSet=string.ascii_uppercase+string.ascii_lowercase
print(charSet)
#ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

刮開有獎

hint:在編輯框輸入flag

彈出一個對話框,對話框對應函數是DialogFunc

運行卻沒有輸入框和按鈕,上 RH 看看

最近有兩道題都用到了這個工具,也是來學習一下

首先 Resource Hacker 是一款windows應用程序的資源編譯器和反編譯器

1.可以查看和編輯可執行文件(exe, dll, src 等)和已編譯資源庫(res, mui )中的資源

2.提取 (保存) 資源為文件 (*.res) 格式,可作為二進制,或作為反編譯過的資源腳本或圖像。

圖標、位圖、指針、菜單、對話、字符串表、消息表、加速器、Borland 窗體和版本信息資源都可以完整地反編譯為其各自的格式,不論是作為圖像還是作為 *.rc 文本文件都可以。

3. 修改 (替換) 可執行文件的資源。

圖像資源(圖標、指針和位圖)可以被相應的圖像文件(*.ico, *.cur, *.bmp)、*.res 文件、甚至是另一個 *.exe 文件所替換。

對話、菜單、字符串表、快捷鍵和消息表資源腳本(以及 Borland 窗體)可以通過使用內部資源腳本編輯器被編輯和重新編譯。

資源也可以被某個 *.res 文件所替換,只要替換的資源與其是同一類型并且有相同的名稱即可。

4. 添加 新的資源到可執行文件。

允許一個程序支持多種語言,或將自定義圖標或位圖(公司的標識等)添加到程序的對話中。

5. 刪除 資源。大多數編譯器添加了應用程序永遠都不會用到的資源到應用程序中。刪除這些不使用的資源可以減小應用程序的體積。

一些可執行文件使用壓縮算法進行“打包”或“壓縮”。這不僅會減小文件大小,還會使查看和修改資源變得稍微困難??一些

ES_READONLY

WS_DISABLED

WS_DISABLED

CONTROL 129,-1,STATIC,SS_BITMAP | WS_CHILD | WS_VISIBLE, 7,7,230,72

加上 WS_VISIBLE 屬性

也是修復成功了,但輸入點擊沒有反應,不知道是沒有回顯還是怎么的

就是一個簡單base64得到五位flag,還有兩位是經過一個比較復雜的遞歸函數,可以寫個代碼跑也可以直接動調,我就動調了

import base64
v4='ak1w'
v5='V1Ax'
flag=[0]*8
v4=base64.b64decode(v4)
v5=base64.b64decode(v5)
flag[5]=v4[0]
flag[6]=v4[1]
flag[7]=v4[2]
flag[3]=v5[1]
flag[4]=v5[2]
flag[2]=v5[0]
flag[0] = ord('3') + 34
flag[1] =ord('J')
for i in range(8):print(chr(flag[i]),end='')

最后也可以看到是成功才有回顯。

CrackRTF

這個是 SHA_1哈希函數

CryptCreateHash 函數的第二個參數應該用來指定 hash 的類型

SHA1也是要知道 round 的好像,不看了,直接爆破(反正都是數字)

import hashlib
def sha1Encode(plain):sha=hashlib.sha1(plain.encode('utf-8'))return sha.hexdigest().upper()
passwd=''
for i in range(100000,1000000):plain=str(i)+'@DBApp'#print(plain)if sha1Encode(plain)=='6E32D0943418C2C33385BC35A1470250DD8923A9':passwd=str(i)break
print(passwd)
# 123321

第二部分就是一個 md5 找個網站或者用 hashcat (沒用過)

全出來了:~!3a@0123321@DBApp

[2019紅帽杯]easyRE

分析首先就是簡單的異或,然后有十次 base64

寫個腳本

import base64
target = "Vm0wd2VHUXhTWGhpUm1SWVYwZDRWVll3Wkc5WFJsbDNXa1pPVlUxV2NIcFhhMk0xVmpKS1NHVkdXbFpOYmtKVVZtcEtTMUl5VGtsaVJtUk9ZV3hhZVZadGVHdFRNVTVYVW01T2FGSnRVbGhhVjNoaFZWWmtWMXBFVWxSTmJFcElWbTAxVDJGV1NuTlhia0pXWWxob1dGUnJXbXRXTVZaeVdrWm9hVlpyV1hwV1IzaGhXVmRHVjFOdVVsWmlhMHBZV1ZSR1lWZEdVbFZTYlhSWFRWWndNRlZ0TVc5VWJGcFZWbXR3VjJKSFVYZFdha1pXWlZaT2NtRkhhRk5pVjJoWVYxZDBhMVV3TlhOalJscFlZbGhTY1ZsclduZGxiR1J5VmxSR1ZXSlZjRWhaTUZKaFZqSktWVkZZYUZkV1JWcFlWV3BHYTFkWFRrZFRiV3hvVFVoQ1dsWXhaRFJpTWtsM1RVaG9hbEpYYUhOVmJUVkRZekZhY1ZKcmRGTk5Wa3A2VjJ0U1ExWlhTbFpqUldoYVRVWndkbFpxUmtwbGJVWklZVVprYUdFeGNHOVhXSEJIWkRGS2RGSnJhR2hTYXpWdlZGVm9RMlJzV25STldHUlZUVlpXTlZadE5VOVdiVXBJVld4c1dtSllUWGhXTUZwell6RmFkRkpzVWxOaVNFSktWa1phVTFFeFduUlRhMlJxVWxad1YxWnRlRXRXTVZaSFVsUnNVVlZVTURrPQ=="
for _ in range(10):target = base64.b64decode(target)
print (target)

得到一個網址:b'https://bbs.pediy.com/thread-254172.htm'[原創]看雪CTF從入門到存活(六)主動防御-CTF對抗-看雪-安全社區|安全招聘|kanxue.com

elf 文件執行:

elf 從 start 函數開始執行(由 Entry point 指定),然后執行順序是 __libc_start_main -> __libc_csu_init -> _init_array 中的函數 -> main -> __libc_csu_fini -> _fini_array 中的函數。

?

這道題的 start 函數:

2019紅帽杯easyRE

_init_array 地址可以在 __libc_csu_init 函數中找到:

2019紅帽杯easyRE

翻一翻 _init_array 和 _fini_array 中的函數,每個都點過去 F5 看一下:

2019紅帽杯easyRE

_fini_array 的第二個函數指針 sub_400D35 最為可疑:

2019紅帽杯easyRE

Youngter-drive

嗯,運行不了,只能靜態分析了

兩個API函數

?::hObject = CreateMutexW(0, 0, 0); ? ?

創建或打開一個命名的或非命名的互斥體對象。互斥體對象用于線程同步,確保多個線程在同一時刻只有一個線程訪問共享資源。

CloseHandle(hObject);

?關閉內核對象句柄的函數。hObject:這是一個句柄,指向一個內核對象。此對象可以是文件、文件映射、進程、線程、安全和同步對象(如互斥體、信號量、事件)等。

StartAddress函數

sub_4011

要注意,這個函數看似沒有用,但 count 也減一了,寫腳本時要注意。

剛好前幾天學了一點的線程,也大致知道這兩個函數交替執行,且線程1先拿到鎖

也是遇到了一個棧不平衡的花指令:

這個棧不平衡之前也是有遇到的,需要學學。

table='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
target='TOiZiZtOrYaToUwPnToBsOaOapsyS'+'y'
flag=['']*len(target)
for i in range(len(target)-1,-1,-1):if i%2:if ord(target[i])<97:flag[i]=chr(table.index(target[i])+96)else:flag[i]=chr(table.index(target[i])+38)else:flag[i]=target[i]
print(''.join(flag))
#ThisisthreadofwindowshahaIsESE

[GKCTF2020]Check_1n

main()函數里看不出什么,string窗口看看

一眼像base64,解一下

得到:Why don't you try the magic brick game

動調一下

不知道在干嘛,是個操作系統

點擊也沒用阿

還有 ida 顯示中文需要修復一下

是要自己猜密碼好像,看到密碼錯誤的字符串,雙擊跟進,找到函數

找到密碼在 aHelloworld里,即“HelloWorld”

運行一下,不知道怎么操作,啊!就只能用幾個方向鍵搞好像

[GXYCTF2019]luck_guy

也是提示了:try to patch me and find flag

確實可以自己寫個腳本跑,或者就是 patch

現在來學一下 patch ,那個 KeyPatch插件不知道怎么又沒了,煩

0x04008CA是case4的開始地址,讓函數進來直接跳這

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

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

相關文章

汽車線束搭鐵與接地

一、搭鐵與接地的概念 首先在這里解釋一下“搭鐵”與“接地”的概念&#xff0c;不要混為一團&#xff01; 先說接地&#xff0c;大地是可導電的&#xff0c;其電位通常取為零。電力系統和電氣裝置的中性點、電氣設備的外露導電部分及裝置外導電部分通過導體與大地相連&#xf…

MySQL數據庫的約束

MySQL對于數據庫存儲的數據, 做出一些限制性要求, 就叫做數據庫的"約束". 在每一列的 列名, 類型 后面加上"約束". 一. not null (非空) 指定某列不能存儲null值. 二. unique (唯一) 保證這一列的每行必須有唯一值. 我們可以看到, 給 table 的 sn 列插…

【微服務】docker部署redis,一主二從三哨兵,讀寫分離

配置redis讀寫分離 3臺虛擬機 創建目錄用于掛載 mkdir -p /root/redis/{conf,data,logs} #master配置文件 bind 0.0.0.0 //任何ip都能訪問 port 6379 //redis端口號 logfile "/data/redis.log" //日志文件存放位置&#xff0c;啟動redis之前設置為空&#xff…

prometheus docker部署

1.安裝Docker sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors":["https://hub-mirror.c.163.com"] } EOF export DOWNLOAD_URL"https://hub-mirror.163.com/docker-ce" curl -fsSL https://ge…

TypeScript 中的聲明合并

1. 聲明合并的概念 聲明合并是指當 TypeScript 遇到多個同名的聲明時&#xff0c;會將它們合并為一個單一的聲明。這使得開發者可以分散地定義同一個實體的不同部分&#xff0c;最終將它們合并為一個整體。在進行聲明合并時&#xff0c;TypeScript 會根據不同類型的聲明進行不…

【LIN】STM32新能源汽車LIN通信實現過程

【LIN】STM32新能源汽車LIN通信實現過程 文章目錄 前言一、軟件二、接線圖三、硬件原理圖四、上位機五、PICO示波器串行解碼1.軟件中的LIN波特率設置-192002.PIC設置3.PIC串行解碼 六.引用總結 前言 【電機控制】直流有刷電機、無刷電機匯總——持續更新 使用工具&#xff1a;…

godot.bk

1.搜索godot國內鏡像&#xff0c;直接安裝&#xff0c;mono是csharp版本 2.直接解壓&#xff0c;50m&#xff0c;無需安裝&#xff0c;直接運行 3.godot里分為場景&#xff0c;節點 主場景用control場景&#xff0c;下面掛textureact放背景圖片&#xff0c;右鍵實例化子場景把…

961題庫 北航計算機 計算機網絡 附答案 簡答題形式

有題目和答案&#xff0c;沒有解析&#xff0c;不懂的題問大模型即可&#xff0c;無償分享。 第1組 習題 某網絡拓撲如題下圖所示&#xff0c;其中 R 為路由器&#xff0c;主機 H1&#xff5e;H4 的 IP 地址配置以及 R 的各接口 IP 地址配置如圖中所示。現有若干以太網交換機…

Python高效遍歷文件和目錄的方法

在 Python 中&#xff0c;遍歷文件和目錄可以使用 os、pathlib 等模塊。以下是一些高效遍歷文件和目錄的方法&#xff1a; 使用 os.walk() os.walk() 是一個高效的遞歸遍歷指定目錄及其子目錄的方法&#xff0c;它返回一個生成器&#xff0c;生成一個三元組 (root, dirs, fil…

Instruction-Tuningpromote tuning原理,對比區別

Instruction-Tuning 原理 Instruction-Tuning&#xff08;指令調優&#xff09;是一種通過對模型提供明確指令或任務描述&#xff0c;從而提升其在特定任務上的表現的技術。這種方法通過預先定義好的任務說明&#xff08;instructions&#xff09;對模型進行微調&#xff0c;使…

鴻蒙應用開發之OpenGL應用和X組件9

接著下來,我們來分析函數CreateProgram的實現,它是實現著色器程序的編譯、加載和刪除資源。 GLuint EGLCore::CreateProgram(const char *vertexShader, const char *fragShader) { if ((nullptr == vertexShader) || (nullptr == fragShader)) { OH_LOG_Print(L…

MySQL—函數—函數小結

一、引言 前面博客我們已經學完了MySQL的函數&#xff0c;下面快速的對MySQL的函數做一個小結。 在講解了MySQL的函數的時候&#xff0c;主要有四個方面&#xff1a; 1、字符串函數 &#xff08;1&#xff09;CONCAT&#xff1a;字符串連接 &#xff08;2&#xff09;LOWER、…

Java 多線程創建:三種主要方法

多線程編程是Java中一個重要的技術點&#xff0c;它允許程序并行執行多個任務&#xff0c;從而提高程序的執行效率。本文將詳細介紹在Java中創建多線程的三種主要方法&#xff1a;繼承Thread類、實現Runnable接口以及使用Callable和Future接口。 1. 繼承 Thread 類 繼承Threa…

【前端每日基礎】day34——HTTP和HTTPS

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是互聯網通信協議&#xff0c;用于在Web瀏覽器和Web服務器之間傳輸數據。以下是對HTTP和HTTPS的詳細介紹&#xff1a; HTTP&#xff08;Hypertext…

Ubuntu server 24 (Linux) IPtables 雙網卡 共享上網NAT 安裝配置DHCP

一 開啟路由轉發功能 sudo vim /etc/sysctl.conf net.ipv4.ip_forward1 sudo sysctl -p 二 安裝DHCP #更新軟件包列表&#xff1a; sudo apt update #安裝DHCP服務器 sudo apt install isc-dhcp-server #修改監聽網卡,根據實際修改 sudo vi /etc/default/isc-dhcp-server …

配置 HTTP 代理 (HTTP proxy)

配置 HTTP 代理 [HTTP proxy] 1. Proxies2. curl2.1. Environment2.2. Proxy protocol prefixes 3. Use an HTTP proxy (使用 HTTP 代理)3.1. Using the examples (使用示例)3.1.1. Linux or macOS3.1.2. Windows Command Prompt 3.2. Authenticating to a proxy (向代理進行身…

Tailwindcss Layout布局相關樣式及實戰案例,5萬字長文,附完整源碼和效果截圖

aspect 相關樣式類 基礎樣式 ClassPropertiesaspect-autoaspect-ratio: auto;aspect-squareaspect-ratio: 1 / 1;aspect-videoaspect-ratio: 16 / 9; 案例&#xff1a;引入B站視頻 Use the aspect-* utilities to set the desired aspect ratio of an element. 使用’ asp…

兩款 IntelliJ IDEA 的 AI 編程插件

介紹兩款 IntelliJ IDEA 的 AI 編程插件&#xff1a;通義靈碼和 CodeGeeX。 通義靈碼 這是由阿里推出的一個基于通義大模型的 AI 編碼助手。 它提供了代碼智能生成、研發智能問答等功能。通義靈碼經過海量優秀開源代碼數據訓練&#xff0c;可以根據當前代碼文件及跨文件的上下…

kafka-偏移量圖解

生產者偏移量&#xff1a;生產者發送消息時寫入到哪個位置&#xff08;主題的每個分區會存儲一個 leo 即將寫入消息的偏移量&#xff09;&#xff0c;每次寫完消息 leo 會 1 消費者偏移量&#xff1a;消費者從哪個位置開始消費消息&#xff0c;小于等于 leo&#xff0c;每個組…

數據賦能(107)——體系:數據采集——概述、關注焦點

概述 數據采集是指利用特定設備或技術&#xff0c;從原始數據源中捕獲和記錄數據的過程。 數據采集的主要目的是為了獲取特定目標或現象的相關信息&#xff0c;以支持后續的數據分析、決策制定、業務優化等過程。 數據采集的重要性在于為企業和組織提供了關鍵的信息基礎&…