SharkCTF2021 The_nature_of_the_human
(信安数基的quiz1写不出来 来这放题解泄愤)
crypto类题。
题面
其加密的大致过程是,对明文flag中的逐个字符,随机使用三种加密方式:
第一种,对该字符进行sha256加密后以16进制形式输出。
第二种,将该字符转化为ascii码值,后进行指数运算+取模 加密。
第三种,依次有base32,base64,base16加密;随机生成key,并根据key的二进制后三位,决定是否进行。
代码审计部分:
append()方法在被选元素的结尾(仍然在内部)插入指定内容。
该方法只能对列表使用,且无返回值;但对参数限制较少。
ord()函数只能对字符型变量使用;返回其对应的ascii码值。
其他函数等都来自额外的 {from hashlib import sha256}{from base64 import *}中,使用时照葫芦画瓢即可。
解码时,对于第一种加密,有脚本:
对于第二种加密,有脚本:
这两个脚本的思路都是 算出所有字符对应的加密,然后查询密文。
对于第三种加密,我是用解码器一个一个试的。
https://www.qtool.net/baseencode
工作过程留念: