N1CTF 2018 lipstick WriteUp (bugku——多彩)
阿新 • • 發佈:2018-12-11
一開始是在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