1. 程式人生 > >N1CTF 2018 lipstick WriteUp (bugku——多彩)

N1CTF 2018 lipstick WriteUp (bugku——多彩)

一開始是在bugku網站上看到這題的。。後來瞭解到是N1CTF2018國際賽的題。。

將圖片下載下來之後放入Stegsolve。。。

看到了這個。。。(楊樹林???)再加上題目是lipstick。。。心想著肯定與YSL的口紅有關。。。

先分析下。。點選Analyse——>Data Extract

看到有個PK頭。。心裡有數。。直接save bin 存為zip格式

開啟壓縮包。。發現是加密的。。

經過嘗試發現並不是zip偽加密。。。後來實在猜不到密碼。。就上網找了下wp。。發現密碼竟然是YSL對應口紅色號的二進位制轉字串。。。(心態有點崩)。。。這裡附上wp的地址

行吧。。先開啟PS取色。。

記下這21個顏色程式碼。。。

然後就去找YSL的口紅色號(手動捂臉。。)

這裡我用php寫了個指令碼。。(為什麼不用python。。因為python沒學好。。)

<?php
        $data='';
        $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,'https://www.yslbeautyus.com/on/demandware.store/Sites-ysl-us-Site/en_US/Product-Variation?pid=194YSL'); //地址
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            //curl_setopt($ch, CURLOPT_HTTPHEADER,$data);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
            $rr=curl_exec($ch);
            curl_close($ch);
            $pat='/style="background-color: #(.*?)" title="(.*?)">/';
            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 "<br />";
                  }

            }

執行之後發現。。。

少了一個色號。。。(心態又崩了。。可能是因為網站更新了。。找不到這個色號。。)

後來翻了一些其他的網站發現空著的色號是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地址 

直接就python setup.py install

詳情可以參考這篇部落格

執行指令碼得出密碼

密碼為白學家。。。。(竟然還是中文的。。心態又崩了)

flag