halo
簡單的base64解密會出現奇怪的字符
import string
from base64 import *
b=b64decode("aWdxNDs1NDFSOzFpa1I1MWliT08w")
data=list(b)
for k in range(0,200):
key=""
for i in range(len(data)):
key+=chr(ord(data[i])^k)
print (key)
跑出來的結果有一個沒有特殊符號
picture3
先用binwalk -e 分解出來
然後我們直接用stego.txt跑出結果即可
def get_base64_diff_value(s1, s2):
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
res = 0
for i in xrange(len(s1)):
if s1[i] != s2[i]:
return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
return res
def solve_stego():
with open('stego.txt', 'rb') as f:
file_lines = f.readlines()
bin_str = ''
for line in file_lines:
steg_line = line.replace('\n', '')
norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
diff = get_base64_diff_value(steg_line, norm_line)
pads_num = steg_line.count('=')
if diff:
bin_str += bin(diff)[2:].zfill(pads_num * 2)
else:
bin_str += '0' * pads_num * 2
res_str = ''
for i in xrange(0, len(bin_str), 8):
res_str += chr(int(bin_str[i:i+8], 2))
print res_str
solve_stego()
regexpire
from pwn import *
import rstr
import exrex
from time import sleep
import re
# conect to server
r = remote('misc.chal.csaw.io', 8001)
# Print the question string
print r.recvline()
# Counter
i=1
while True:
# Recieve the regex pattern
reg = r.recvline()[:-1]
print "%d -------\n"%i
print reg
print "-------\n"
ans=rstr.xeger(reg).replace('\n','') # Remove newlines!
# ans=exrex.getone(reg).replace('\n','') # Another possible option
r.sendline(ans)
i+=1
sleep(0.2)
flag{^regularly_express_yourself$}
Crc
通過crc32爆破
然後把三個密碼依次連接起來,後面發現密碼是forum_91ctf_com_66
二進制轉換成文本,然後保存到html文件中,打開獲得二維碼,掃描即可
A-Weird-C-Program
下載源代碼時,會注意到它具有所有這些奇怪的間距。
製表符本來是1,空格是0
再用python即可
打開電動車
是音頻文件,直接打開
短的一段表示0,長的一段表示1
得到01110100101010100110
加上flag
sctf{01110100101010100110}
Hong
用binwalk分析發現有很多文件
foremost hong.mp3分解出來
直接就發現了flag
BCTF{cute&fat_cats_does_not_like_drinking}
神奇的壓縮文件
解壓後使用 AlternateStreamView 掃描發現了 flag.zip 文件
壓縮包註釋段隱藏信息
將空格與TAB組成的空行轉換爲01
得到字符串110110011000111110100110011011110 110110110110010001100110110110011 01110110111110010011001001111101
進行ASCII轉換,得到flag:lctf{6d3677dd}
北京地鐵
根據題目描述,應該是AES-ECB加密,目前通過低位隱寫拿到了base64(ciphertext),密鑰16bytes未知.hint:Color Threshold 則通過gimp2查看Color Threshold,等到hint:發現魏公村顏色不對,根據提示,可能是密鑰。
from Crypto.Cipher import AES
import base64
aes_instance = AES.new(b'weigongcun'.ljust(16, b'\0'), AES.MODE_ECB)
cipher = base64.b64decode('7SsQWmZ524i/yVWoMeAIJA==')
plaintext = aes_instance.decrypt(cipher)
print(plaintext)
7-2
解壓後發現大堆文件名,嘗試base64
ls|tr -d ' '|base64 -d
發現<p@<uk'2Pz1KFAN߬r9HSLainidexingzhuang>$Il{arGks!gb|5 愛你的新裝字樣,定位到文件YWluaWRleGluZ3podWFuZw
cat後得到00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 94 22 42 91 23 {82 42 82 52 63 21 42 22 73 21 }00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
鍵盤密碼 + 凱撒得到flag
wdflag{ylyoselfve}
Clemency
用IDA的反彙編腳本
https://github.com/cseagle/ida_clemency
將腳本放入文件夾下,重新打開進行反彙編即可。
flag{I_love_cLEMENCy,so_I_want_to_share_it_with_you}
Keyes_secret
首先找出兩個大括號之間的位置
鍵盤字母連起來對應另一個字母:
得到flag:FLAG{ISCC-KEYBOARD-CIPHER}