REVERSE-PRACTICE-CTFSHOW-8
- Matara Okina
- anniu
- warmup
- e
Matara Okina
apk文件,jadx-gui打开
MainActivity什么都没有,来到FlagActivity
scheme,host这些看不懂
第44行有个ans和bytes的比较,ans已知,bytes是从某个地方获得的参数,然后对bytes做异或运算
写脚本得到bytes
ans="@lgvjocWzihodmXov[EWO"
ans_num=[ord(c) for c in ans]
for i in range(0,(len(ans_num)+1)/2):ans_num[i]^=(i+1)index=len(ans_num)-1-ians_num[index]^=(i+1)
print("".join(chr(i) for i in ans_num))
# Android_scheme_is_FUN
在真机上安装apk,运行后发现没有可以输入的地方,应该是和scheme,host这些东西相关
参考:re学习笔记(71)大吉杯DJBCTF - re - 部分WP
创建一个空的.txt文件,构造链接
<a href="sh0w://p4th/70/1nput?secret=Android_scheme_is_FUN">获取flag</a>
将.txt文件后缀改成.html
在真机上启动apk后,再打开新建的.html文件,即可获得flag
flag{sh0w://p4th/70/1nput?secret=Android_scheme_is_FUN_1635b71e036d}
anniu
灰色按钮克星一把梭
warmup
64位elf,ida打开
main函数中,读取输入,长度为48,且均为小写字母a-f或数字0-9
将输入填入数独中的0xFF处
最后校验数独
网上找到一个sudoku16_solver.py脚本可以解16*16的数独
空缺的地方用"-“表示
找到在”-"处填入的正确字符,即可组成flag
f1=open("D:\\ctfdownloadfiles\\map.txt","r")
f2=open("D:\\ctfdownloadfiles\\map_solved.txt","r")
flag=""
line1=f1.readline()
line2=f2.readline()
while line1 and line2:for i in range(len(line1)):if line1[i]!=line2[i]:flag+=line2[i]line1 = f1.readline()line2 = f2.readline()
print(flag)
# 765c98e78644507b8dfb1552693e467871026d26ba03c175
e
32位elf,ida打开
main函数,加载krnln.so,调用.so中的RunPrg函数
运行elf后输入,调试,输入"aaaa",一路n,来到下图所示处,找到一个字符串"DDDJJJBBBRRREEE"
找到的字符串即为flag