两道某银行CTF面试题
有人能帮我吗
我是一个运维,有人偷偷看了一张我们网站上没有公开的,名叫facebook的照片,我必须找到他,让他守口如瓶,可是我找不到他了,你能帮我找到他的物理地址吗?这样就方便我找到他了。提交flag格式: flag{md5(物理地址}}
流量分析,给的提示很明显。
tcp contains "facebook" 过滤流量
就剩几个包了,请求来源IP:172.16.16.136
请求来源mac地址:00:21:6a:5b:7d:4a
flag{3723961ed39b4158eff1edb9cbee559c}
强大的hash
为了规避密码hash泄漏后被GPU爆破,安全部推广安全hash算法。您可以告诉我数据库中的hash密码是什么吗?
hash:$v=19$m=32768,t=100,p=1$MTIzNDU2Nzg$iuSRO5tkWxBxqgkI5g9O5ZersA//xvgvrKxH8QuxBBI4yKbG4aRFqITP/Rh5giFRuL9PTJP+/0BUfNwZHzx9bQ
密码格式:CTF_三位数_三位数 (数字为电话号码)
例如:CTF_114_114
flag为: flag{CTF_三位数_三位数}
看这个密文格式还以为是shadow文件类型的,但是最前面的$1是指md5才对,用不到这么多参数。
最后发现是Argon2算法,顺便学习了一下。
Argon2算法
Argon2 is a password-hashing function created by by Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich.
Argon2算法曾在2015 年的Password Hashing密码加密大赛中胜出。
Argon2官网:https://www.argon2.com/
------------------------------------------------------------------------
0x00 phc-winner-argon2的安装
git clone https://github.com/P-H-C/phc-winner-argon2cd phc-winner-argon2make
使用方法:
echo -n "CTF_110_911" | ./argon2 12345678 -d -t 100 -m 15 -p 1 -l 64
0x01 argon2-cffi的安装
CFFI: C Foreign Function Interface for Python. Interact with almost any C code from Python, based on C-like declarations that you can often copy-paste from header files or documentation.
pip install argon2_cffi
请不要安装pip install argon2
argon2-cffi的github:https://github.com/hynek/argon2-cffi
argon2-cffi文档:https://argon2-cffi.readthedocs.io/en/stable/
0x02 argon2-cffi的使用
# -*- coding:utf8 -*- __author__='pcat@chamd5.org' from argon2 import PasswordHasher ph=PasswordHasher() hash='$argon2d$v=19$m=32768,t=100,p=1$MTIzNDU2Nzg$iuSRO5tkWxBxqgkI5g9O5ZersA//xvgvrKxH8QuxBBI4yKbG4aRFqITP/Rh5giFRuL9PTJP+/0BUfNwZHzx9bQ' pwd='CTF_110_911' assert ph.verify(hash,pwd)==True
0x03 argon2的各个版本
Argon2d 最大限度地提高了对GPU破解攻击的抵抗力。它以密码相关的顺序访问存储器阵列,这降低了时间 - 存储器权衡(TMTO)攻击的可能性,但是引入了可能的侧面信道攻击。
Argon2i 优化了抵御侧向通道攻击的能力。它以密码无关的顺序访问内存阵列。
Argon2id 是一个混合版本。它遵循Argon2i方法进行第一次通过内存,Argon2d方法用于后续通过。Internet-Draft建议使用Argon2id,除非有理由选择其他两种模式之一。
Argon2 接收如下几个输入配置参数:time_cost(时间消耗,即迭代次数,本题中的t)、memory_cost(要使用的 KB 数,本题中的m)、parallelism(并行度,使用多少个线程,本题中的p)、hash_len(派生密钥的长度)、salt_len(随机生成盐的长度,通常是 128 位 / 16 字节)。
flag{CTF_110_911}