欢迎光临散文网 会员登陆 & 注册

2019安洵杯杂项1和逆向1WP

2019-12-10 12:05 作者:snow_404  | 我要投稿

大佬众多,菜鸟只做出来2道题,有错指出改正.

吹着贝斯扫二维码

题目就可以知道这道题有base加密和二维码要素,先下载文件查看

什么都看不出来但是能找到里面还有个压缩包

尝试打开发现需要密码

看来和其他文件有关,就先试试看文件16进制有没有什么隐藏信息,果然发现里面有jpeg可以知道这是一张图片,多看几个发现每个都是图片

直接用格式工厂批量把文件转换成jpg格式

然后就是拼图了 应该有简便方法比如脚本之类的,可惜本人太菜只能靠手一点一点的拼图,工具可以使用ps,画图,ppt都行

扫描二维码获得提示

base全家桶? 里面的85和13完全没听说过,通过百度知道了85确实存在这里是用的ASCII85的加密,但是怎么都找不到13,在朋友的提示下觉得可以试试rot13的加密方式,毕竟能想到和13有关的也就rot13了

接下来就是找密文了,既然图片是通过看16进制的方式找到的,那么也可以把flag压缩包也放进16进制看看有没有信息

在末尾如愿以偿的看见了一串明显是密文的内容,复制下来开始解密,想到既然是解密那么就应该反过来才对:Base32:3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148

Base16: :q]>WN62os<^b]!;,be.=n;v@9/17&apos;@8bAH

Rot13: :d]>ja62bf<^o]!;,or.=a;i@9/17&apos;@8onu

Base85:PCtvdWU4VFJnQUByYy4mK1lraTA=

Base64:<+oue8TRgA@rc.&+Yki0

Base85:ThisIsSecret!233

拿去解压

获得flag


Easy_Encryption

题目没什么信息,下载附件

打开ida后先找到main函数

Shift+F12查看字符串,找个大概率在main函数中的双击

X 查看哪里调用的这个字符串

就到了main函数,就可以分析内容了,先不管前面的系统函数,查看系统函数下面的第一条函数:sub_4111F4看看执行了什么

进去之后不能f5,菜鸟表示很难直接分析汇编语言,就先转到汇编页面进去先

然后再f5

复制f5出错的地址

找到这个地址后,把这个地址的上一个地址去掉

然后再E重设置函数结尾就能F5了

粗略看一下,猜测这应该是一个算法,想到后面main还会执行命令就先不管这算法看看后面还执行了些什么

有个if判定,还是进去看判定条件

有个赋值再往里面走一步看看赋值了什么

能看出来这是个base64的加密,退出不看继续看下一步

这一步是一个对比把str1拿来和后面的字符串进行对比相等为0取反即为真,在后面mian函数就没什么可以执行了,由此可知应该是要将这个if判定为真即可,往上找str1来自什么地方

来自于最开始的第一个算法

先分析算法:

加密算法本身不难,解密算法由于懒得想,知道flag长度15位,加密算法只涉及到字符位置和字符,所以可以爆字符对应表,即可断点flag

解密:

table = list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')

input = 'artqkoehqpkbihv'

for i in range(len(table)):
    temp =
ord(table[i]) - ord('a')
   
if temp < 0:
        temp *= -
1
   
table[i] = temp
def allTable(io):
    each = []
   
for i in range(15):
        a = []
       
for i2 in range(ord('a'), ord('z') + 1):
           
if (i2 + io[i] - ord('a')) % 26 + ord('a') > ord('z'):
                stringb =
chr((i2 + io[i] - ord('a')) % 26 + ord('G'))
           
else:
                stringb =
chr((i2 + io[i] - ord('a')) % 26 + ord('a'))
            a.append(stringb)
        each.append(a)
   
return each


table = allTable(table)
flag =
''
for i in range(len(input)):
    flag +=
chr(table[i].index(input[i]) + ord('a'))

print flag

if __name__ == '__main__':
   
pass

2019安洵杯杂项1和逆向1WP的评论 (共 条)

分享到微博请遵守国家法律