实验吧——安全杂项(四)
0.說明
每五個題目寫作一篇writeup,第一行對應解題筆記(一)……
1.社交網絡
感覺自己的腦洞還是太小,一開始沒有想到Birthday是什么意思,后來想到生日應該是8位數(shù)字,于是重新爆破。在這個過程中大膽猜測社交網絡上的人生日應該在1900年之后,于是從這個數(shù)字開始爆破。
2.有趣的文件
看了大佬的writeup之后有了思路,于是自己手動寫了一個腳本解密,但是其中走了很多彎路……
直接復制前面8個十六進制字符去搜索的話,會發(fā)現(xiàn)這很像7z壓縮包的文件頭,但是每兩個字節(jié)之間需要換下位置(我之前并不知道7z的格式是什么樣的……)。圖一是錯誤的格式,圖二是正確的格式
于是我寫了一個腳本,去除行號,去除換行符,并且在4個字符中1號2號位置的字符和3號4號位置字符交換位置。最終得到了正確的十六進制數(shù)據。
with open('flag.txt', 'wb') as f_7z:f_7z.write('377a '.encode('utf-8'))with open('funfile.txt', 'r') as f:while True:line = f.readline()if not line:break#去除行號,去除換行符line_strip = line.replace(line.split(' ')[0]+' ', '')line_reverse = ''for i in line_strip.split(' '):line_reverse += i[2:4] + i[0:2] + ' 'if line != '0018af0':f_7z.write(line_reverse.encode('utf-8'))但是因為我不知道怎么把十六進制數(shù)據寫入文件并讓它也存儲為十六進制數(shù)據,所以在得到十六進制的數(shù)據后,使用winhex來幫我完成接下來的工作。
新建一個txt文檔,直接拖入winhex中準備寫入數(shù)據。
復制上個程序中得到的十六進制數(shù)據
粘貼到winhex中,選擇ASCII hex模式粘貼(這里的圖沒截到……)
之后保存文件,手動將文件后綴改為7z,可以打開壓縮包,將里面的阿貍圖片再拖到winhex中可以看到base64編碼的flag。
3.Paint&Scan
因為對于圖片隱寫有一定的基礎,看到點的坐標時就知道這個題目需要我們通過點的坐標畫圖還原FLAG,一開始還以為可以直接得到FLAG字符串的,結果還需要掃個二維碼……
Python的PIL庫簡單易用(在Python3中對應庫為Pillow),在網上隨便找了篇畫圖教程之后就知道了其原理,個人覺得稍難一點的地方是還需要調用這個庫去新建一個圖片。可以參考官方文檔:http://www.effbot.org/imagingbook/image.htm
最終的代碼如下:
得到結果如下圖所示,掃碼可得FLAG。
4.64格
因為這個題目做完之后沒及時寫Writeup,所以忘了截圖。
打開所給GIF圖片后不能顯示,放到winhex里面發(fā)現(xiàn)文件頭錯誤,修改文件頭為GIF89a,可以看到一張19幀的活蹦亂跳的小黃人GIF,放入逐幀分解的軟件中(我用的PS),可以看到每一幀中小黃人的位置,將小黃人對應位置用六十四卦幻方配數(shù)圖對應為相應數(shù)字,再用Base64索引表解碼得到base64字符串Q1RGe2FiY19kZWZfZ30,解碼得flag(這兩種編碼方法是結合題目名稱64在網上搜索到的)。
5.異性相吸
下載后得到一個明文和一個密文,并且都是32位的,同時題目難度為“易”,猜測可能是進行了一些簡單的位運算,又因為題目名稱為“異性相吸”,猜測可能是進行了異或,使用以下Python腳本解密
f_cry = open('密文.txt', 'r') f_txt = open('明文.txt', 'r')line_cry = f_cry.read() line_txt = f_txt.read()for i in range(0, len(line_txt)):print(chr(ord(line_txt[i]) ^ ord(line_cry[i])), end='')這個程序打印出來的結果提交后并不正確,展開腦洞把后面都寫成biubiubiu后成功……
總結
以上是生活随笔為你收集整理的实验吧——安全杂项(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何压缩jpg图片大小?怎么在线jpg图
- 下一篇: shield分析