一开始是在bugku网站上看到这题的。。后来了解到是N1CTF2018国际赛的题。。
将图片下载下来之后放入Stegsolve。。。
看到了这个。。。(杨树林???)再加上题目是lipstick。。。心想着肯定与YSL的口红有关。。。
先分析下。。点击Analyse——>Data Extract
看到有个PK头。。心里有数。。直接save bin 存为zip格式
打开压缩包。。发现是加密的。。
经过尝试发现并不是zip伪加密。。。后来实在猜不到密码。。就上网找了下wp。。发现密码竟然是YSL对应口红色号的二进制转字符串。。。(心态有点崩)。。。这里附上wp的地址
https://www.secpulse.com/archives/69465.html
行吧。。先打开PS取色。。
记下这21个颜色代码。。。
然后就去找YSL的口红色号(手动捂脸。。)
https://www.yslbeautyus.com/on/demandware.store/Sites-ysl-us-Site/en_US/Product-Variation?pid=194YSL
这里我用php写了个脚本。。(为什么不用python。。因为python没学好。。)
/';
preg_match_all($pat,$rr,$dd);
$color=array_flip($dd[1]);
$num=$dd[2];
//print_r($num);die;
$arr=array('BC0B28','D04179','D47A6F','C2696F','EB8262', 'CF1A77','C0083E','BC0B28','BC0B28','D13274', '6A1319','BC0B28','BC0B28','D4121D','D75B59', 'DD8885','CE0A4A','D4121D','7E453A','D75B59', 'DD8885'); //这里是用ps取到的颜色代码
foreach ($arr as $k => $v) {
if(in_array($v,$color))
{
print_r($num[$color[$v]]);
echo "
";
}
}
运行之后发现。。。
少了一个色号。。。(心态又崩了。。可能是因为网站更新了。。找不到这个色号。。)
后来翻了一些其他的网站发现空着的色号是76(当然。。看一下别人的wp也能发现)
现在就可以将这些色号编码转为二进制。。然后再转为字符串。。
这里就需要用python了。。(因为这个转换不难。。刚好会)
# -*- coding:utf8 -*-
import sys
import libnum
ss=''
s=[1,27,59,11,23,7,57,1,1,76,222,1,1,50,214,6,77,50,53,214,6]
for i in s:
ss+=bin(i)[2:]
print ss
type = sys.getfilesystemencoding()
print libnum.b2s(ss).decode('utf-8').encode(type)
这里需要安装libnum库。。。
github地址
https://github.com/hellman/libnum
直接就python setup.py install
详情可以参考这篇博客
https://www.cnblogs.com/pcat/p/7225782.html
运行脚本得出密码
密码为白学家。。。。(竟然还是中文的。。心态又崩了)
flag