1、[SWPUCTF 2022 新生赛]什锦
题目包含3个附件
CodeA=Decode(友善爱国平等友善自由友善敬业爱国诚信文明诚信自由平等友善平等友善公正诚信民主友善自由友善爱国公正敬业爱国爱国诚信自由友善爱国自由诚信民主爱国诚信民主友善平等友善爱国公正敬业公正爱国法治友善爱国公正敬业爱国爱国诚信自由诚信自由平等敬业文明爱国诚信文明诚信自由爱国诚信民主富强敬业富强)
CodeB=Decode(CodeB.png)
CodeC=Decode(CodeC.txt)
flag=MD5(CodeA+CodeB+CodeC)
CodeA社会主义核心价值观,解码之后得到富强明主文明和谐
CodeC.txt是brainfuck编码,解码之后得到但是猪猪好好吃诶
CodeB.png是猪圈密码,解密之后得到PIGISSOCUTEWHYYOUKILLPIG
,字符串需要小写
flag=md5(富强明主文明和谐pigissocutewhyyoukillpig但是猪猪好好吃诶)=c05485d678cb8a6beb401f31d762532a
2、[SWPU 2020]来猜谜了
010edit打开图片发现文件结构正确,那么通过stegsolve打开之后在RGB 0通道发现zip压缩包,导出之后发现mi.jpg和uuu.pcap文件,其中流量文件发现是键盘流量通过脚本提取之后得到
[+] Found : <CAP>ag<SPACE>dx<SPACE>ag<SPACE>dx<SPACE>ag<SPACE>dx
那么字符串就是ag dx ag dx ag dx
看到ag dx想到adfgx密码,根据编码表
A D F G X
----------------
A | p h q g m
D | e a y n o
F | f d x k r
G | c v s z w
X | b u t i/j l
然后得到gogogo字符串,同时结合未使用的图片,那么gogogo应该是一个密码
jpg隐写主要有jsteg、steghide、outguess
通过提示发现是outguess密码
┌──(root㉿kali)-[~/Desktop/MISC]
└─# outguess -k gogogo -r mi.jpg -t out
Reading mi.jpg....
Extracting usable bits: 43231 bits
Steg retrieve: seed: 118, len: 28
┌──(root㉿kali)-[~/Desktop/MISC]
└─# cat out
flag{Out9uEsS_1s_V4rY_e4sy}
3、[SWPU 2019]easyapp
题目下载之后是一个apk文件,然后通过jadx打开文件之后发现
然后再com.example.ndktest2包中的MainActivity中导入了native-lib文件,同时会判断输入的字符串和Encrypt是否一致,然后通过JEB3将lib.so文件导出
然后通过ida将lib.so文件打开
然后发现flag字样的内容,将字符串拼接之后发现提交不对
然后通过后来搜索test字符串发现test函数
发现特殊的函数名Aa aA aa AA
,然后追踪过去发现
通过大厨异或得到uoY
然后将其他三个函数同样计算后发现
uoY era eht B3ST
想到数值的大小端问题,将前面的三个字符串逆转,拼接后得到
YouaretheB3ST
提交YouaretheB3ST
这个题目还有一种解法就是hook 加密算法,然后通过加密算法的返回值得到flag
首先打开夜神模拟器,然后通过adb连接进行连接
everything搜索adb.exe
adb connect 127.0.0.1:62001
already connected to 127.0.0.1:62001 连接成功
adb shell 进入shell模式
cd data/local/tmp/
./frida-server-15.1.13-android-x86 运行firda程序
然后通过objection自动搜寻app并进行转入,然后hook程序执行
objection -g com.example.ndktest2 explore
objection -g 程序包 explore
hook关键函数函数
android hooking watch class_method com.example.ndktest2.MainActivity.Encrypt --dump-args --dump-backtrace --dump-return
android hooking watch class_method com.example.ndktest2.MainActivity.Encrypt(类名称) --dump-args --dump-backtrace --dump-return
然后就可以得到返回值
同时还可以主动调用函数输出结果
android heap search instances com.example.ndktest2.MainActivity #搜索类名,获得hashid
Class instance enumeration complete for com.example.ndktest2.MainActivity
Hashcode Class toString()
--------- --------------------------------- -----------------------------------------
262889158 com.example.ndktest2.MainActivity com.example.ndktest2.MainActivity@fab5ec6
android heap execute 262889158 Encrypt 执行类中的函数
com.example.ndktest2 on (samsung: 7.1.2) [usb] # android heap execute 262889158 Encrypt
Handle 262889158 is to class
com.example.ndktest2.MainActivity
Executing method: Encrypt()
(agent) [821992] Called com.example.ndktest2.MainActivity.Encrypt()
(agent) [821992] Backtrace:
com.example.ndktest2.MainActivity.Encrypt(Native Method)
(agent) [821992] Return Value: YouaretheB3ST
YouaretheB3ST
com.example.ndktest2 on (samsung: 7.1.2) [usb] #