【js逆向】某空氣質量網
網址:http://www.aqistudy.cn/historydata/monthdata.php?city=北京
反爬手段
F12檢測:用ctrl+shift+i,然後將開發者工具彈出
無限Debugger:用油猴注入以下hook腳本 12345678910111213141516171819202122// ==UserScript==// @name debugger// @namespace http://www.aqistudy.cn/historydata/monthdata.php?city=%E5%8C%97%E4%BA%AC// @version 0.1// @description try to take over the world!// @author You// @match http://www.aqistudy.cn/historydata/monthdata.php?city=%E5%8C%97%E4%BA%AC// @icon https://www.google.c ...
【HGAME2023】week3-kunmusic
分析
是.net的逆向,將kmusic.dll拉入dnSpy
找到下圖這處,發現是對一些數據進行解密
直接在解密完的位置下斷點,獲取解密後的數據
頭2個字節是0x4D和0x5A,明顯是一個PE文件
嘗試拉入IDA進行分析,但IDA卻提示該文件同樣是.net assembly
所以要用dnSpy來分析
然後就找到最終的地方,在這裡解密後就能得到flag
腳本1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import z3s = z3.Solver()num = [z3.BitVec("%d"%x,8) for x in range(13)]s.add(num[0] + 52296 + num[1] - 26211 + num[2] - 11754 + (num[3] ^ 41236) + ...
【HGAME2023】week2-VidarCamera
程序分析
找到加密函數,發現明顯xtea算法的特點( <<4 >>5 ),delta為878077251
分析後可知,v[0]和v[1]一組進行xtea,然後再v[1]和v[2]一組進行xtea,如此類推,因此解密時要從後向前進行解密
裡面的語句都經過一些簡單的”混淆”,手動還原一下最核心的兩句
可以看到第一句代碼與原版xtea相比多了一個^sum
12iArr[i2] += (((key[(sum & 3)]) + sum) ^(((iArr[i] << 4) ^ (iArr[i] >>> 5)) + iArr[i])) ^ sum iArr[i] += (((iArr[i2] << 4) ^ (iArr[i2] >>> 5)) + iArr[i2]) ^ ((key[((sum >>> 11) & 3)]) + sum)
腳本12345678910111213141516171819202122232425262728#include < ...
【FlareOn2】sender
分析a1是flag,先對flag進行了加法操作,所以之後解密時直接減回來就可
之後對flag進行了變表的base64加密
最後會發送網路請求,也就是題目給出的那個.pcap檔,要用wireshark打開
在wireshark用指令http.request.method=="POST"過濾掉其他無用的封包,只留下POST請求的那些
然後再逐一取出所有data,拼接起來後,這就是我們的密文
解密腳本1234567891011121314151617from base64 import b64decodefake_table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"real_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"enc_data = list("UDYs1D7bNmdE1o3g5ms1V6RrYCVvODJF ...
Python爬取網易云評論
分析頁面
在網頁原始碼中找不到評論區的內容,由此可知這網頁是客戶端渲染
注:F12與網頁原始碼是兩個不同的東西,F12中會顯示當前網頁的實時數據,所以可以看到評論區的內容
在XHR中找到2次響應的數據
可以看到請求的參數明顯經過加密,因此接下來就是要找到加密的地方
至此,大概可以分析出我們爬蟲的步驟:
找到未加密前的參數是怎樣的
找到加密函數,自己用python模擬出來
對【未加密前的參數】作出自己需要的修改,然後再放到自己模擬的加密函數中進行加密
發送請求
動調JS對於網頁來說,動調實在是十分的方便,只順通過很簡單的方法就可以看到函數的調用順序,根據這個順序就能很輕易地找到加密的地方,具體操作如下:
在上面已經找到服務器返回的評論區的數據,即get?csrf_token=這個
點擊發起人→要求呼叫堆疊,這裡就是發送這個網路封包時的函數調用棧,點擊最上面那個
然後再點擊左下角的{}來格式化JS代碼
之後可以看到高亮的那行代碼就是發送請求的地方,然後按左邊的數字來下斷點
之後按F5重新載入網頁,觀察作用域的數據來判斷是否停在了我需要的地方,若 ...
【FlareOn2】gdssagh
分析
拉入IDA,發現只打印了一句話,然後就退出了
但在其下方發現一大堆沒分析出來的數據,嘗試轉為代碼,但轉完後無從下手
然後再嘗試轉為數據,發現一大堆可見字符,且很像Base64
嘗試取開頭的一小段進行Base64解密,結果如下,由此可知這些base64字符串其實是一張圖片
使用CTF-Tools工具,將base64轉換為圖片
工具操作:先將base64字符複制到Source中,然後常見編碼→圖片轉換→base64->圖片
然後得到下面這張圖片,看不出什麼東西,極有可能是有一些隱寫操作
zsteg的安裝及使用
參考這篇文章,發現是zsteg的隱寫
在Ubuntu安裝zsteg的方法:
sudo apt-get install rubygems
gem install zsteg
使用指令zsteg what.jpg 來查看what.jpg所隱藏的所有東西,然後檢測到嵌入的PE32可執行文件,如下圖所示,記下b1,rgb,msb,xy這串東西
使用指令zsteg -E b1,rgb,msb,xy what.jpg > hide.exe 來提取上述的PE文 ...
【第五届安洵杯】Re部分Wp
reee這題沒看懂FindWindow的考點@@,算是運氣好,直接RC4解密就出flag了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116#include <iostream>#include <Windows.h>using namespace std;char init_rc4(char* key, char* a2, unsigned int key_len){ int v4; // ebx int v5; // esi char* v6; // ecx unsig ...
【SUCTF2018】HelloPython
題目:https://github.com/hebtuerror404/CTF_competition_warehouse_2018/tree/master/2018_SUCTF/reverse/hellopython( 注:buu上的附件沒有給密文,有夠坑= = )
反編譯
使用uncompyle6將.pyc轉成.py,經測試在Ubuntu 20.04.5 LTS上使用python2安裝的uncompyle6能順利反匯譯出如下信息:
可以看到它使用lambda表達式進行了混淆
根據題目描述可知這是個加密程序,密文在題目描述中給出
1234567891011121314# uncompyle6 version 3.8.0# Python bytecode 2.7 (62211)# Decompiled from: Python 2.7.18 (default, Jul 1 2022, 12:27:04) # [GCC 9.4.0]# Warning: this version of Python has problems handling the Python 3 byte t ...
【NPUCTF2020】EzReverse
一開始會有個簡單的花指令,去掉後才能對mainF5
對每個if語句進行分析( 結合動調 )後發現,有點像迷宮
v3是地圖,由數組大小可知地圖大小是7*7,若v3[i]是偶數則代表不能走的地方( 若走了直按failed ),反之是奇數就是可走的路,而終點在v3[48]
l:向右,h:向左,j:向上,k:向下
打印地圖,*代表可走,X代表不可走,終點是最後一個
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <iostream>using namespace std;int main() { long long v3[49] = { 0 }; *v3 = 0xDFAE04FLL; v3[1] = 0x148983F2LL; v3[7] = 0x15B847LL; v3[2] = 0x69981A413ELL ...
【XNUCA2018】Code_Interpreter WriteUp
可以看出是一道虛擬機題,要求輸入3個整數,經encrypt()後再做對比
動調後可知input1~3的值不會被encrypt()修改
再分析encrypt()後,知其內部通過數組越界的方式對whereIsThisShit_進行操作,易知whereIsThisShit_最終需為0
先將程序流程打印出來
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129#include <iostream>#include <string>#include "defs ...