Reverse
Reverse-ez_apk
用IDA进行打开,找到main函数
def decrypt(encrypted_text, decryption_key):
key_bytes = decryption_key.encode()
characters = list(encrypted_text)
decrypted_characters = [''] * len(characters)
for index, character in enumerate(characters):
if character in ['_', '{', '}']:
decrypted_characters[index] = character
elif 'a' <= character <= 'z':
# 应用解密逻辑
decrypted_characters[index] = chr(((ord(character) - ord('a') - (key_bytes[index % len(key_bytes)] - ord('a'))) % 26 + ord('a')))
else:
# 遇到非预期字符则停止解密
break
return ''.join(decrypted_characters)
# 解密密钥
decryption_key = "aptxcony"
# 密文
cipher_text = "fatd{sm_cgrmvc_ylvhokhuk_gxsgffc_wtec}"
# 解密结果
decrypted_result = decrypt(cipher_text, decryption_key)
print(decrypted_result)
加密处理,进行构造脚本
Reverse-jiqimao
用kali打开,进行反编译exe
发现不可以打开,那我进行反编译
找到一段字符
fVJXNjE0ODBpM2RrZmNSVzYxNDgwaTNka01BSlVPe25oc20=
这是一段base64编码,进行解密
凯撒偏移解码
}KP61480b3wdyvKP61480b3wdFTCNH{galf
再进行字符串逆序
Reverse-fenxi
找到一道类似的题目,进行参考一下[https://blog.csdn.net/weixin_52640415/article/details/123877043](https://blog.csdn.net/weixin_52640415/article/details/123877043" \t "_blank)
if (p[3]+p[5] != pow((I-------I).A,2) * (I-----I)+(I---I)) error(); // (3*3) ** 2 * 2 + 1 == 163
if (p[3]+p[4] != pow((o-----------o
| !
! !
! !
o-----------o).A,2)+(I---I)) error(); // (5*3) ** 2 + 1 == 226
if (p[4]*p[5] != (pow((o-------------o
| !
! !
! !
o-------------o).A,2)-(I---I))(I-----I)pow(I-------I,2)) error(); // ((63) ** 2 - 1)2* 3**2 = 5814
if (p[7]+p[8] != (o-----------o
|L </font>
| L </font>
| L </font>
| o-----------o|! // x=5,y=3,z=4
o | ! // 534 * 22 - (3*2)2 +1 == 205
L | !
L | !
L| !
o-----------o).V*pow(I-----I,2) - pow((o-------o // x=3,y=2
| !
! !
o-------o).A,2) + (I---I)) error();
尝试爆破得到字符
# 解密标志的第一部分
flag = ''
for first_char_code in range(0x20, 0x7f):
for second_char_code in range(0x20, 0x7f):
for third_char_code in range(0x20, 0x7f):
if first_char_code + second_char_code == 101 and </font>
second_char_code + third_char_code == 143 and </font>
first_char_code * third_char_code == 5035:
flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)
print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')
# 已找到的部分标志
#50_
# 解密标志的第二部分
for first_char_code in range(0x20, 0x7f):
for second_char_code in range(0x20, 0x7f):
for third_char_code in range(0x20, 0x7f):
if first_char_code + second_char_code == 226 and </font>
first_char_code + third_char_code == 163 and </font>
second_char_code * third_char_code == 5814:
flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)
print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')
# 已找到的部分标志
#pr3
# 解密标志的第三部分
for first_char_code in range(0x20, 0x7f):
for second_char_code in range(0x20, 0x7f):
for third_char_code in range(0x20, 0x7f):
if second_char_code + third_char_code == 205 and </font>
first_char_code + third_char_code == 173 and </font>
first_char_code * second_char_code == 9744:
flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)
print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')
# 已找到的部分标志
#Tty
# 解密标志的最后一部分
for first_char_code in range(0x20, 0x7f):
for second_char_code in range(0x20, 0x7f):
for third_char_code in range(0x20, 0x7f):
if first_char_code + second_char_code * third_char_code == 5375 and </font>
second_char_code + first_char_code * third_char_code == 4670 and </font>
first_char_code + second_char_code == 205:
flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)
print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')
# 已找到的部分标志
#_n0
# 添加剩余字符
flag += 'w'
# 输出最终的标志
print(flag)
50_pr3TtY_n0w
最后得到,进行包裹得到flag
Reverse-CSMazeee
首先查个壳发,现是32位的,并且有壳
寻找工具能进行脱壳处理
脱壳后是这个,然后把他放入dnspy中进行分析
这应该是一个迷宫程序
进行调试得到
00******0000
0000000**0
***000
100*0000
0**0
****00000000
是上下左右,走出迷宫
rdrrrrrddrruuurrrdddddllllllluull
连续点击100下得到flag
感悟
在这次御网杯的比赛中,我不仅在技术上有了显著的进步,更重要的是,在精神层面也得到了一次难得的洗礼,在一天的比赛中我体验到从感到新鲜,到渐渐疲惫,再到解出flag的欣喜。
在本次比赛中我对web有了更深的理解,通过实际操作,我发现理论知识与实战经验之间存在着巨大的差异,只有真正动手去做,才能体会到解决问题的乐趣。比赛中遇到的一些复杂问题,更是激发了我对网络安全领域的兴趣,使我意识到自己在这个领域的不足之处,同时也明确了未来努力的方向。
在做其他题目时候,我发现我的逆向能力还不强,我在以后得学习中会加强这方面的学习与理解,在密码学方面,我也有些欠缺 ,我对密码的基础概念还可以,但是通过本次比赛,我发现我对密码的理解还不够深刻,还有一些知识盲区,我意识到网络安全对我们的重要性,每个细节都决定了我们的成败。
总的来说,御网杯不仅是一场技术较量,更是一次自我超越的过程。在这里,我不仅收获了知识,更收获了友谊和成长。未来,我将继续努力,不断探索网络安全的奥秘,为自己也为社会贡献一份力量。同时我也要感谢比赛方给了我这次比赛学习的机会,我会更坚定的在网安的道路上走下去。