CTF之MISC練習二

1、base16解密
題目名稱:base64÷4
題目附件
https://adworld.xctf.org.cn/media/task/attachments/c8cb2b557b57475d8ec1ed36e819ac4d.txt
題目writeup:
1.根據題目名稱,猜想是base16
2.經過在線base16解密可得到:
https://www.qqxiuzi.cn/bianma/base.php?type=16
3.解密腳本:
import base64
s='666C61677B45333342374644384133423834314341393639394544444241323442363041417D'
flag=base64.b16decode(s)
print flag
4.最終得到flag:
flag{E33B7FD8A3B841CA9699EDDBA24B60AA}
2、modbus工業協議流量包分析
題目名稱:神奇的Modbus
題目描述
尋找flag,提交格式爲sctf{xxx}
附件內容
基礎知識
Modbus是一種串行通訊協議,是Modicon公司(如今的施耐德電氣 Schneider Electric)於1979年爲使用可編程邏輯控制器(PLC)通訊而發表。Modbus已經成爲工業領域通訊協議的業界標準(De facto),而且如今是工業電子設備之間經常使用的鏈接方式
題目writeup:
1.經過搜索字符串flag關鍵字,但沒有相關搜索
2. 搜索sctf關鍵字,卻出現sctf格式
結果出來:sctf{Easy_Mdbus},提交有錯誤
根據題目名稱Modbus關鍵字,可能附件內容中流量包中缺乏一個o
提交flag:
sctf{Easy_Modbus},則成功提交

3、流量包http協議分析
題目名稱:wireshark-1
題目描述
黑客經過wireshark抓到管理員登錄網站的一段流量包(管理員的密碼便是答案)。 flag提交形式爲flag{XXXX}
附件內容
https://adworld.xctf.org.cn/media/task/attachments/ab8cfea44ced4dd8bd96c7f769ce1309.zip
題目writeup:
1.用wireshark打開流量包,經過搜索http關鍵協議,並查找post數據包
2.追蹤流--http流
3.能夠看到post提交的數據password關鍵字後門的內容,也就是答案,答案就是flag
4.最終flag爲:
flag{ffb7567a1d4f4abdffdb54e022f8facd}

4、圖片的影寫

題目名稱:pure_color
題目描述
格式爲flag{xxxxxx}
題目附件
https://adworld.xctf.org.cn/media/task/attachments/1457ba9a15f944ae8520e024f72bf7a6.png
題目writeup:
1.經過notepad查看關鍵字flag並無任何內容
2.經過題目名稱color與顏色有關,關聯到有多是圖片影寫,經過stegsolve查看圖片,按下面的「<」按鈕,就獲得flag
最終flag:
flag{true_steganographers_doesnt_need_any_tools}

5、圖片隱寫之AES雙重解密

題目名稱:Aesop_secret
題目附件
https://adworld.xctf.org.cn/media/task/attachments/f732347c6bad47f1ac715cf67a3f4532.zip
題目writeup:
1.下載附件解壓獲得一個動態圖片gif,而後經過圖片影寫工具 stegsolver查看並無任何東西
2.經過notepad查看,發現最後面有一串加密的字符串,題目名稱爲aes,那麼該字符串則是aes加密的字符串
3.經過在線aes解密,猜想密鑰可能爲:2019_ISCC或者ISCC,經過測試發現密鑰爲ISCC則能夠解密,可是解密出來的仍是AES加密字符串
在線aes解密網站
https://www.sojson.com/encrypt_aes.html
4.再次進行第二次解密,則能夠得到flag
5.最終flag
flag{DugUpADiamondADeepDarkMine}

6、圖片隱寫之LSB的字符反轉

題目名稱:倒立屋
題目描述
房屋爲何會倒立!是重力反轉了嗎?
題目附件
https://adworld.xctf.org.cn/media/task/attachments/0ffa808362f34bf8a2d5bf473c1d455a.zip
題目writeup:
1.下載附件,解壓文件,獲得一張圖片文件,而後經過圖片隱寫工具 stegsolve的Analyse-Extract Preview查看圖片的LSB屬性。
2.發現有關FLAG的相關聯的關鍵字:IsCc_2019
3.直接提交flag{ IsCc_2019}是錯誤的,根據題目描述,反轉關鍵字,最終flag爲:flag{9102_cCsI}

7、壞損圖片影寫
題目名稱
something_in_image
題目附件
https://adworld.xctf.org.cn/media/task/attachments/b2c46758ac3b41eaa457ff8e64d5d17c.zip
題目wirtup:
1.下載附件,經過記事本或者 010editor搜索關鍵字flag,便可發現flag
2.最終flag爲:
Flag{yc4pl0fvjs2k1t7T}

8、圖片隱寫之翻轉

題目名稱:reverseMe
目附件
https://adworld.xctf.org.cn/media/task/attachments/021b62817d7f439aab5338ea63fe1b4b.jpg
題目writeup:
1.經過windows10自帶的圖片查看工具的翻轉功能便可查看flag
2.最終flag:
flag{4f7548f93c7bef1dc6a0542cf04e796e}

9、日曆影寫
題目名稱:2017_Dating_in_Singapor
題目描述
01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-04051213192625
題目附件
題目writup:
1.下載附件,發現打開一張日曆
2.根據描述,發現用分割符號"-"進行分割,有12段( 數字的特徵,最小爲01,最大爲31,一共十二行,恰對應12個月,每月最多31天。結合今年(2017)日曆),那麼每段的數字和日曆月份有關聯,而且兩兩數字一組,最終簡化以下:
01081522291516170310172431-
050607132027262728-
0102030209162330-
02091623020310090910172423-
02010814222930-
0605041118252627-
0203040310172431-
0102030108152229151617-
04050604111825181920-
0108152229303124171003-
261912052028211407-
04051213192625
3.按每一行順序對應每個月份的狀況下,每個數字對應日期,再按照順序在日曆上鍊接成線,就是flag了

4.最終flag:
HIT8{CTFFUN}


10、流量包隱藏文件之PDF
題目名稱:simple_transfer
題目描述
文件裏有flag,找到它
題目writeup:
1.下載附件,用wireshark打開流量文件,搜索flag關鍵字,並無發現任何東西

2.將該流量文件上傳到kali系統中,用binwalk命令查看該文件包含哪些文件,發現有pdf文件包含其中
binwalk  f9809647382a42e5bfb64d7d447b4099_.pcap 
3.經過foremost命令分解其包含中的文件,分解出audit.txt和pdf文件夾,進入pdf文件夾中,發現包含了00000662.pdf文件
foremost  f9809647382a42e5bfb64d7d447b4099_.pcap 
4 打開pdf文件,裏面什麼都沒有,全黑色背景
5. 直接CTRL + A 全選,新建一個txt文件,而後CTRL + V 粘貼,最終 獲得flag
HITB{b3d0e380e9c39352c667307d010775ca}

11、最基礎的圖片影寫
題目名稱:Training-Stegano-1
題目描述
這是我能想到的最基礎的圖片隱寫術
題目附件
https://adworld.xctf.org.cn/media/task/attachments/2e5e19744c644912928eddc882f3b0b9.bmp
題目writeup:
1.下載附件圖片,經過記事本查看,有個一個密碼爲:steganoI,猜想爲flag
2.提交flag{ steganoI },可是不對,再次提交 steganoI ,發現正確,最終flag爲:steganoI
12、BrainFuck語言解密
題目名稱:can_has_stdio?
題目附件
基礎知識
BrainFuck語言是極簡的一種圖靈完備的語言,由Urban Müller在1993年創造,由八個指令組成(以下表)。工做機制與圖靈機很是類似,有一條足夠長的紙帶,初始時紙帶上的每一格都是0,有一個數據讀寫頭指向紙帶的初始位置,讀寫頭的行爲由指令指示。
brainfuck有兩種類型:
1. < < + - > ,  [   ]
2.  0ok! 0ok. 0ok?
題目writeup:
1.下載附件,解壓壓縮文件,獲得一個文件misc50,其中包含如下內容
2.看到內容,判斷是 brainfuck 代碼,,經過在線解密工具進行解密:

3.最終flag爲:
flag{esolangs_for_fun_and_profit}

十3、壓縮包爆破
題目名稱:János-the-Ripper
題目附件
https://adworld.xctf.org.cn/media/task/attachments/310085c4315841b1b784b4803ff7e4c1.zip
題目wirteup
1.下載附近,解壓文件,獲得misc100文件,並經過winhex查看,發現是50,4b,03開頭,說明是rar壓縮文件,其中還有flag.txt文件。
2.可是打開.rar文件,提示須要輸入密碼,且題目名稱爲 János-the-Ripper,該名爲著名的密碼爆破工具,須要咱們對該.RAR文件進行爆破。
經過archpr爆破工具對壓縮包進行爆破

最終flag:
flag{ev3n::y0u::bru7us?!}

十4、影寫之十六進制轉換
題目名稱:Test-flag-please-ignore
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/2f572adcaa5447feb8cc8c50969cd57d.zip
題目writeup:
1.下載附件,解壓附件獲得misc100,經過notepad查看文件內容
2.發現一串字符串:666c61677b68656c6c6f5f776f726c647d,嘗試md5 hash值解密發現沒法解密,發現該字符串是0到9以及a到f組成,是十六進制形式
3.經過在線十六進制轉換成ascii字符
https://www.sojson.com/hexadecimal.html


4.最終獲得flag爲:
flag{hello_world}

十5、影寫之有規律的字符串
題目名稱:hit-the-core
題目描述
alexctf-2017
題目附件
https://adworld.xctf.org.cn/media/task/attachments/2f572adcaa5447feb8cc8c50969cd57d.zip
題目writeup:
1.下載附件,對其進行解壓,發現一個.core文件,該文件爲liunx下的崩潰錯誤生成的文件。經過記事本查看其內容,發現有一些特殊的字符串
或者經過kail下的strings命令查看文件中的字符串
2.獲得可疑的字符串:
cvq Aeqac Ltqaz Eigwi Xobxr Crtui Tzahf Freqc{bnjr Kwgk8 3kgd4 3j85e Pgb_e _rwqr 7fvbm Hjklo 3tews _hmko gooyf 0vbnk 0ii87 Drfgh _n ki wutfb 0ghk9 ro987 k5tfb _hjio uo087 ptfcv}
3.仔細觀察,發現前加粗的大寫字母連起來爲:ALEXCTF,正好爲flag提交的格式開頭,且每一個字母之間有4個字符相隔,那麼括號裏面按照規律就能夠組合鏈接起來。
4.最終獲得flag :
ALEXCTF{K33P_7H3_g00D_w0rk_up}
附錄:
data = 'cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}'
flag = ''
for i in range(3, len(data), 5):
    flag += data[i]

print(flag)


十6、玩遊戲獲取flag
題目名稱:快樂遊戲
題目附件
https://adworld.xctf.org.cn/media/task/attachments/bce2610d3bfa4da8813732deaab7f87f.zip
題目writeup:
1.下載附件,對其解壓,打開.exe文件,遊戲要求圍住貓便可獲取flag
2.最終獲得flag:
UNCTF{c783910550de39816d1de0f103b0ae32}

十7、動態圖片分解合併
題目名稱:glance-50
題目附件
https://adworld.xctf.org.cn/media/task/attachments/9266eadf353d4ada94ededaeb96d0c50.gif
題目wirteup:
1.下載附件,獲得一個很長的一條gif動態圖片,經過stegsolve和winhex等工具並無發現flag
2. 那麼這個題大機率就是分離gif的每一幀而後拼接造成圖片獲得flag
方法一
1.使用convert命令對動態圖片flag.gif進行分割
  convert flag.gif  flag.png
2.再使用montage命令對分割的圖片進行合併
montage flag*.png   -tile x1 -geometry +0+0   flag.png
選項:

-tile是拼接時每行和每列的圖片數,這裏用x1,就是隻一行php

-geometry是首選每一個圖和邊框尺寸,咱們邊框爲0,圖照原始尺寸便可html

合成圖片爲:
方法二
1.經過python腳本進行分割gif動態圖片
import os
from PIL import Image

def seoaration_gif(gif_file):
png_dir = gif_file[:-4] + '/'
os.mkdir(png_dir)
img = Image.open(gif_file)
try:
while True:
current = img.tell()
img.save(png_dir+str(current)+'.png')
img.seek(current+1)
except:
pass

if __name__=='__main__':
gif_file = 'flag.gif'
seoaration_gif(gif_file)

2.再次經過python腳本對分割後的png 靜態圖片進行合併
# coding=utf-8
# Data: 2021/7/7 16:13
# File : hebin.py
from PIL import Image

path = "C:\\Users\\backlion\\Desktop\\flag\\flag\\"
save_path = 'C:\\Users\\backlion\\Desktop\\flag\\'

im = Image.new('RGBA', (2 * 201, 600)) # 建立新照片

imagefile = [] # 存儲全部的圖像的名稱
width = 0
for i in range(0, 201):
imagefile.append(Image.open(path + str(i) + '.png')) # 遍歷,將圖像名稱存入imagfile

for image in imagefile:
im.paste(image, (width, 0, 2 + width, 600)) # 將圖片張貼到另外一張圖片上
width = width + 2
im.save(save_path + 'result.png')
im.show()


方法三:
可直接經過在線動態圖片分解工具進行獲取
https://tu.sioe.cn/gj/fenjie/
最終flag:
TWCTF{Bliss by Charles  0'Rear}



十8、圖片影寫之像素取反比較
題目名稱:a_good_idea
題目附件
https://adworld.xctf.org.cn/media/task/attachments/96378111f32f49d09f691870f1268799.rar
題目witeup:
1.下載附件,對其進行解壓,發現一張a_very_good_idea.jpg圖片,首先對其進行圖片查看,是否含有隱藏文件

2.經過binwalk命令對圖片文件進行分析,發現包含有壓縮文件,且壓縮文件內含有2張圖片和一個txt文件
binwalk  a_very_good_idea.jpg 
3.經過foremost命令對 a_very_good_idea.jpg 圖片文件進行分解
foremost  a_very_good_idea.jpg 
4.打開其中的hint.txt文件,發現有一段字符串, try to find the secret of pixels,表示:試着找到像素的祕密



5.打開File—>Open—>圖片,這裏先打開a_very_good_idea.jpg圖片
6.經過analyse-image combiner 打開圖片to.png

7.利用stegsolve將兩張圖片進行combine,獲得像素相減的圖,按左右鍵轉換色道,會跳出二維碼
8.經過微信掃描二維,最終獲得flag:
NCTF{m1sc_1s_very_funny!!!}


十9、
題目名稱:
題目附件:
題目writeup:
1.下載附件,解壓,發現一張斑馬條形碼的圖片文件,既然有條形碼,這裏 利用條形碼在線閱讀獲得其內容: https://online-barcode-reader.inliteresearch.com/
最終獲得flag:
flag{TENSHINE}

題目名稱:easycap
題目描述:你能從截取的數據包中獲得flag嗎?
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d5ba8f87969145059170a222f01e7883.pcap
題目writeup:
下載附件,並解壓附件,用wireshark打開流量包文件,經過追蹤流-TCP流,可看到falg信息
這裏注意提交flag形式,不是flag{}和FLAG{}
所以最終flag爲:
FLAG:385b87afc8671dee07550290d16a8071

題目名稱:stage1
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/3600c13125fe4443aeef3c55b9c1357b.png
基礎知識:
常見的文件頭和文件尾:
JPEG (jpg),                          文件頭:FFD8FF                        文件尾:FF D9               
PNG (png),                          文件頭:89504E47                      文件尾:AE 42 60 82
GIF (gif),                             文件頭:47494638                      文件尾:00 3B                                                                 
ZIP Archive (zip),                     文件頭:504B0304                      文件尾:50 4B

TIFF (tif),                              文件頭:49492A00                      文件尾:
Windows Bitmap (bmp),         文件頭:424D                         文件尾:
CAD (dwg),                           文件頭:41433130                      文件尾:
Adobe Photoshop (psd),          文件頭:38425053                      文件尾:
Rich Text Format (rtf),             文件頭:7B5C727466                      文件尾:
XML (xml),                              文件頭:3C3F786D6C                     文件尾:
HTML (html),                           文件頭:68746D6C3E
Email [thorough only] (eml),     文件頭:44656C69766572792D646174653A
Outlook Express (dbx),            文件頭:CFAD12FEC5FD746F
Outlook (pst),                         文件頭:2142444E
MS Word/Excel (xls.or.doc),      文件頭:D0CF11E0
MS Access (mdb),                    文件頭:5374616E64617264204A
WordPerfect (wpd),                  文件頭:FF575043
Adobe Acrobat (pdf),               文件頭:255044462D312E
Quicken (qdf),                         文件頭:AC9EBD8F
Windows Password (pwl),         文件頭:E3828596

RAR Archive (rar),                    文件頭:52617221
Wave (wav),                            文件頭:57415645
AVI (avi),                                 文件頭:41564920
Real Audio (ram),                     文件頭:2E7261FD
Real Media (rm),                       文件頭:2E524D46
MPEG (mpg),                           文件頭:000001BA
MPEG (mpg),                           文件頭:000001B3
Quicktime (mov),                     文件頭:6D6F6F76
Windows Media (asf),               文件頭:3026B2758E66CF11
MIDI (mid),                              文件頭:4D546864
pyc                                          文件頭:03f30d0a

題目writeup:
下載附件,解壓獲得一張圖片,經過圖片工具stegsolve打開圖片,查看圖片通道,可發現二維碼
經過二維碼掃描工具QR Research掃描二維碼,可得到一串十六進制的字符
將其十六進制字符複製並保存爲test1.文件
經過winhex工具打開test1.pyc文件,而後對文件進行字符轉換,轉換文件---十六進制ASCII轉換,並肯定保存
並經過在線pyc反編譯對pyc文件進行反編譯爲python文件
https://tool.lu/pyc/
經過美化python代碼,並稍微修改,獲得得到flag的python文件
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
def flag():
str = [65, 108, 112, 104, 97, 76, 97, 98]
flag = ""
for i in str:
flag += chr(i)
print flag
flag()
最終得到flag:
AlphaLab


題目名稱:Hear-with-your-Eyes
題目描述:
用眼睛聽這段音頻
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/bf87ed29ac5a46d0aa433880dac5e6d8.gz
題目writeup:
下載附件,經過linux命令tar對其附件.gz文件進行解壓,獲得一個音頻文件soud.wav
tar  zxvf flag.gz
經過音頻分析工具audacity進行分析,而後選擇步頻譜圖,可獲得falg
顯示爲:
flag:e5353bb7b57578bd4da1c898a8e2d767
注意提交flag格式,試了幾回,最終flag爲:
e5353bb7b57578bd4da1c898a8e2d767

題目名稱:What-is-this
題目描述:找到FLAG
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/e66ea8344f034964ba0b3cb9879996ff.gz
題目writeup:
方法一:
下載附件,並經過linux 命令對其附件.gz進行解壓,獲得2張圖片
tar  zxvf  e66ea8344f034964ba0b3cb9879996ff.gz 
既然是2張圖片,因而猜想多是2張圖片的合併或者比較。 經過隱寫圖片工具stegsolve工具打開pic1.jpg
而後選擇image  comibiner工具打開另外一張圖片pic2.png
\
對2張圖片進行合併,合併後可得到flag
方法二:
獲得兩張類似的圖片, 第一反應是兩張圖片的合併,因而使用kali下的compare命令進行合併,而後獲得FLAG
compare pic1.jpg pic2.jpg -compose src flag.jpg
最終獲得flag:
AZADI  TOWER










題目名稱:red_green
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/2ec5da20345342909d2336aa7418afed.png
題目writeup:
方法一:
下載附件,並得到一張圖片,該圖片由綠色和紅色構成。分別將紅色和綠色視爲0和1.
下面經過stegsolve圖片影寫工具的data extract功能進行分析
勾選RED的0,而後保存flag.jpg
能夠得到flag信息:
方法二:
其中的紅色和綠色視爲0 和 1,再將最後獲得的 01序列 轉存爲圖片,下面爲python代碼:
# coding=utf8

from PIL import Image
import bitstring

im = Image.open('flag.png')
width = im.size[0]
height = im.size[1]
pim = im.load() # 讀取圖片的像素信息
bin_result = ''
for h in range(height):
for w in range(width):
if pim[w,h][0] == 255: # 判斷是不是紅色(R,G,B)[0]表示第一通道
bin_result += '1'
else:
bin_result += '0'

# print bitstring.BitArray(bin=bin_result).bytes.encode('hex')
with open('result.jpg','wb') as f:
f.write(bitstring.BitArray(bin=bin_result).bytes)
最終獲得flag:
flag{134699ac9d6ac98b}

題目名稱:normal_png
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7171426a9b4646aba1db92b1fbc083f5.png
題目writeup:
下載附件,獲得一張png圖片,經過查看圖片隱寫,並無發現可利用的信息。聯想到可能圖片的高度變小,致使有一部分圖片顯示不完整。
那麼這裏咱們調整圖片的高度,這裏經過填充數據形式將03,6B,修改成04,6B,並保存圖片


最終flag爲:
flag{B8B68DD7007B1E406F3DF624440D31E0}


題目名稱:就在其中
題目描述:
格式爲flag{xxxx}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7cd17d910acf4ac8b563aa5caad18717.zip
題目writeup:
首先下載附件,解壓附件,獲得一個 Misc-03.pcapng 流量文件。經過binwalk文件查看文件包含的文件,發現包含zip,pdf,jpg等文件,其中zip文件中含有key.txt文件
binwalk  Misc-03.pcapng 
經過foremost命令對其文件進行分離
發現分離出來的圖片文件沒有和flag有關聯
而且pdf也沒有和flag有關聯
解壓出00000047.zip文件,獲得一個key.txt文件,並打開該文件,發現是亂碼,多是被加密了。猜想是須要對其解密
經過wireshark對 Misc-03.pcapng 進行分析,搜索關鍵字:flag。並無發現和flag有關的信息

再次搜索關鍵字key,並發現數據包中含有"PRIVATE key"

經過追蹤TCP流,發現是ssh的私鑰rsa的key的內容
將其內容保存爲rsa.key
經過openssl命令對其加密的密文key.txt進行加載私鑰進行破解,最終得到明文
openssl rsautl -decrypt -in key.txt -inkey rsa.key -out flag.txt
查看flag.txt
cat  flag.txt
最終得到flag爲:
flag{haPPy_Use_0penSsI}



題目名稱:再見李華
題目描述:
假如你是李華(LiHua),收到喬幫主一封密信,沒有任何特殊字符,請輸入密碼,很多於1000個字。同窗,記得署名哦
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7ab3e456b35945a4afed08050cd8859e.zip
題目writeup:
下載附件,對附件進行解壓,發現一張圖片,圖片上顯示不完整的MD5值,並無可利用點
經過binwalk命令對其文件查看包含的內容,發現其中包含了jpeg和zip文件,且zip文件含有key.txt文件
使用foremost命令對mail2LiHua.jpg進行分離文件,發現00000037.zip文件可利用
對其 00000037.zip文件就解壓縮發現須要密碼。
根據題目描述:
假如你是李華(LiHua),收到喬幫主一封密信,沒有任何特殊字符,請輸入密碼, 很多於 1000 個字。同窗,記得署名哦~
能夠推測出:
很多於1000個字,暗含密碼爲很多於二進制1000的密碼位數(轉換成十六進制就是至少須要8位以上的密碼數)
記得署名爲 李華(LiHua), 意思是密碼中後面5位數是Lihua
使用Advanced ZIP Password Recovery_4.0進行破解。 密碼爲15CCLiHua
如下使用archpr的掩碼攻擊類型進行破解
最終flag:
Stay hungry, Stay foolish.



題目名稱:embarrass
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/54dcee33c07745f39f43a094a1b61dcf.zip
題目writeup:
下載附件,解壓附件獲得一個流量文件misc_02.pcapng文件
使用linux命令strings直接搜索關鍵字,可獲得flag
strings misc_02.pcapng | grep flag
或者用wireshark軟件打開流量包,直接搜索關鍵字flag,也能夠獲得flag
最終獲得flag:
flag{Good_b0y_W3ll_Done}


題目名稱:MISCall
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d02f31b893164d56b7a8e5edb47d9be5
題目writeup:
下載附件,經過binwalk命令查看包含文件,能夠看到文件的類型爲bzip2
binwalk  flag
將flag附件文件從新命名flag.tar.bz2
mv  flag    flag.tar.bz2
對flag.tar.bz2進行解壓
tar -xjvf  flag.tar.bz2
查看解壓文件夾ctf的文件內容,其中包含了flag.txt,和.git文件內容
cd ctf
ls  -al
經過cat命令查看flag.txt,提交裏面的內容,可是錯誤,並非flag,那麼.git文件有可能和flag有關
Nothing to see here, moving along...
經過git stash list 命令查看文件修改狀況,發現flag.txt和s.py都有被修改過
git stash list
須要對.git文件進行還原,在還原前須要將已被修改過的flag.txt文件刪除,而後使用git stash apply命令進行還原,還原後生成了新的文件s.py和flag.txt
rm flag.txt 
git stash apply
再次經過cat命令查看flag.txt內容,發現內容很大一一串,並非flag
cat flag.txt
並又經過cat命令查看s.py內容,發現是與flag有關且和flag.txt有關聯,可生成flag
cat s.py
運行s.py腳本,可得到flag內容
python s.py
最終獲得flag:
NCN4dd992213ae6b76f27d7340f0dde1222888df4d3


題目名稱:Get-the-key.txt
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/256cb07f5dbd493f81ad5b199f2b248a.zip
題目writeup:
下載附近,並對附件進行解壓,獲得解壓後的文件forensic100,經過linux  file命令查看文件系統屬性,發現是一個linux 的ext2系統文件
file  forensic100
經過mount命令對linux系統文件forensic100進行掛載到/opt/flag目錄下
mkdir  /opt/flag
mount -o loop forensic100 /tmp/forensic100
根據題目名稱可知,咱們要找key.txt文件,經過gresp  -r  「key.txt」命令對當前目錄下的全部文件進行關鍵字「key.txt"搜索包含存在的文件,這裏能夠看到是1文件存在包含flag.txt
cd  /opt/flag
grep  -r  'key.txt‘
再次經過file命令查看1的文件屬性,發現該文件是gzip文件
經過gunzip<1查看文件內容,可得到flag
gunzip < 1
最終獲得falg:
SECCON{@]NL7n+-s75FrET]vU=7Z}



題目名稱:Reverse-it
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/0da9641b7aad4efb8f7eb45f47eaebb2
題目writeup:
下載附件,解壓附件,獲得一個flag文件,而後經過winhex查看flag文件,發現末尾是FF 8F FF,這個就是jpg文件格式的頭部,只不過是倒敘過來。根據題目名稱recerse-it,要還原文件,那就要將文件 的內容進行反向。
經過xxd對文件進行十六進制查看
xxd -p  flag
經過xxd命令先將二進制內容進行反向,並將反向後的字符以二進制的形式輸出,而後發現是一個JPEG圖片,此時flag是翻轉的。
xxd -p  flag | tr -d '\n' | rev | xxd -r -p > flags
files  flags
經過convert命令對圖片文件進行翻轉
mv  flags  flags.jpg
convert -flop flags.jpg   flag.jpg

最終獲得flag:
SECCON{6in_tex7}



題目名稱:打野
題目描述:
菜你瞭解CTF圈的實時動態麼?flag格式qwxf{}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/82a98710753740d6b0de1ef17d21c8be.rar
基礎知識:
LSB(英文 least significant bit)即最低有效位。LSB加密是信息隱藏中最基本的方法。一般來講LSB加密用在無損壓縮的數據格式文件中,例如圖像中的bmp格式和音頻的wav格式。對於圖像文件LSB的特徵很明顯,一般將信息隱藏在某一個顏色通道中。
題目writeup:
下載附件,對附件進行解壓獲得一張flag.bmp的圖片,經過命令strings對qwxf關鍵字進行搜索,可是沒有任何信息,且經過stegsolve也沒有發現任何有flag相關的信息
經過zsteg對bmp或者png圖片進行隱寫查看,這裏主要查看LSB隱寫的信息
最終發現flag爲:
qwxf{you_say_chick_beautiful?}



題目名稱:咱們的祕密是綠色的
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/bb9a4b47c82b4a659ce492cd903df03b.zip
題目writeup:
下載附件,解壓附件獲得一張flag.jpg圖片,圖片中尤爲比較明顯的區域爲日曆的綠色字體(根據題目名稱咱們的祕密是綠色,那麼密碼和綠色字體有關,這是一個處猜測)
經過stegsolve查看圖片隱寫以及搜索關鍵字flag,並無發現任何有關的flag,
根據題目名稱咱們的祕密是green,因而想到使用OurSecret這個工具,而後解密還缺一個密碼,正好就是上面綠色的部分數字組合,最終測試密碼爲:0405111218192526可成功解壓出壓縮包
,這裏咱們將try.zip文件保存。
打開壓縮包try.zip提示須要輸入密碼,並查看try.zip的壓縮包信息,能夠看到提示「你知道coffee的生日多少麼」這條信息告訴咱們,壓縮包密碼和生日號碼數字有關。
經過ziperello 對zip進行爆破,這裏的爆破規則爲純數字號碼,生日號碼密碼長度爲1到8位。
獲得密碼,解壓得到兩個文件爲flag.zip和readme.txt
這裏能夠看到flag.zip壓縮包中含有一個readme.txt以及同目錄下也有一個readme.txt,那麼頗有可能和壓縮包明文攻擊有關。同時能夠看到readme.txt的CRC32校驗值爲:
BA59D790
而後咱們將經過winrar壓縮程序對readme.txt壓縮成readme.zip,並查看 readme.txt的CRC32校驗值也爲 BA59D790

經過ARCHPR對flag.zip壓縮包進行明文攻擊,最終獲得解壓密碼爲 Y29mZmVl
經過輸入解壓密碼,獲得2個文件分別爲flag.zip以及reame.txt
打開flag.zip提示須要輸入密碼

而且,此次的flag.zip裏面只有flag.txt
經過 經過ARCHPR對flag.zip壓縮包進行密碼爆破,發現爆破失敗。
經過winhex打開flag.zip壓縮包,發現下面有特殊的僞加密方式:
第一段50 4B 是壓縮源文件數據區的頭文件標記,它對應的紅色框柱的 00 08 並不影響加密屬性。
第二段50 4B 是壓縮源文件目錄區 ,它對應的 01 09 影響加密屬性,當數字爲奇數是爲加密,爲偶數時不加密,所以這將01改成00(通常在第二段50 4B   ...14 00後面修改成00)
這裏將01修改成00,保存便可解壓出flag.zip。


或者經過zipceno0p.jar對其進行僞加密恢復。
java  -jar  ZipCen0p.jar  r  flag.zip
解壓出flag.zip文件後,獲得一個flag.txt文件,打開該文件,看到一串字符串:qddpqwnpcplen%prqwn_{_zz*d@gq}



這個很明顯了看起來像柵欄加密,下面是CTFcrack工具對其直接解密獲得解密:qwlr{ddneq_@dpnwzgpc%nzqqpp_*}java


可是並非flag,看起來像凱撒加密,又再次經過 CTFcrack工具對其直接解密
最終獲得flag:
flag{ssctf_@seclover%coffee_*}

題目名稱:Become_a_Rockstar
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7a7a705cb5874292a47461c7ed0cc0c1.zip
題目writeup:
下載附件,打開是一段字符串,且看到題目名稱爲「Rockstar」有可能和flag有關,因而搜索這個關鍵字,顯示是一門搖滾明星編程語言(Rockstar),這裏經過下面腳本將其轉換成pytho語言
https://github.com/yyyyyyyan/rockstar-py
python3  rockstarpy   -i  Become_a_Rockstar.rock   -o  flag.py
經過執行轉換後的python,便可得到flag
最終flag爲:
NCTF{youarnicerockstar}



題目名稱:小小的PDF
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/a4f37ec070974eadab9b96abd5ddffed.pdf
題目writeup:
下載附件,解壓附件獲得一張flag.pdf文件,而後經過binwalk對其進行文件包含分析,發現裏面包含了一張PDF文件以及3張JPEG文件
經過foemost命令對flag.pdf進行分離,獲得三張圖片和一張PDF文件
查看到00000160.jpg文件,發現是flag內容
最終flag爲:
SYC{so_so_easy}



題目名稱:Cephalopod
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/434c8c0ba659476caa9635b97f95600c.pcap
題目writeup:
方法一:
首先下載附件,獲得一個流量文件flag.pcap,並搜索關鍵字flag,能夠看到流量文件中包含了一張圖片flag.png,可能這種圖片與flag有關
在kali下使用命令foremost提取不了圖片,這裏可使用tcpxtract進行分離流量包中的圖片
  apt-get install tcpxtract
使用tcpxtract  -f  進行分解流量包中的圖片,能夠分解出2張圖片
tcpxtract  -f  flag.pcap 
查看2張圖片,能夠看到在0000000.png圖片中包含flag


方法二:
經過wrireshark打開流量包flag.pcap,搜索關鍵字flag,能夠看到包含了flag.png,這可能與flag有關
而後對其進行追蹤流--tcp流
再次搜索關鍵字flag,發現也有不少包含flag.png的圖片,這些都不是flag.png的真實數據
而後進行數據流2 跳轉,並查看,發現有包含png圖片的內容,且開頭爲IHDR
這裏將以原始數據,保存爲flag.png
經過winhex打開flag.png,刪除89504E前的全部十六進制數據,而後保存圖片


查看保存後的圖片,發現內容包含了flag
最終flag爲:
HITB{95700d8aefdc1648b90a92f3a8460a2c}

題目名稱:Erik-Baleog-and-Olaf
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/a020007e78914bb1a7a17cbf68e2c5d1.zip
題目writeup:
方法一:
使用binwalk命令查看文件包含的內容,其中能夠看到包含了一張png圖片
binwalk stego100
並使用foremost命令分離文件
 foremost  stego100 
得到了一張圖片000000000.png
經過stegsolve工具查看通道,其中圖片中包含殘缺的二維碼。
經過ps進行修復,得到一張二維圖片
經過QR Research二維碼工具掃描,得到flag

方法二:
經過strings 命令查看文件的屬性,其中屬性中包含了一個URL 圖片地址。
http://i.imgur.com/22kUrzm.png(https://github.com/jesstess/tinyctf/blob/master/erik/data/22kUrzm.png)
這種圖片和原始的文件,可能存在必定的關聯,這裏聯想到須要進行2個文件的對比
使用compare命令進行2個文件對比,並輸出一張新的圖片文件
compare stego100 22kUrzm.png -compose src flag.png
經過QR reswarch二維碼掃描工具掃描出flag.png圖片,可得到flag

最終flag爲:
flag{#justdiffit}



題目名稱:labour
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/6bf99baed0d84d2c8c28b6b2f08c34a6
基礎知識:

1.GPX(GPS Exchange Format, GPS交換格式)是一個XML格式,爲應用軟件設計的通用GPS數據格式。python

2.它能夠用來描述路點、軌跡、路程。這個格式是免費的,能夠在不須要付任何許可費用的前提下使用。它的標籤保存位置,海拔和時間,能夠用來在不一樣的GPS設備和軟件之間交換數據。如查看軌跡、在照片的exif數據中嵌入地理數據linux

題目writeup:
1.用記事本打開文件,發現該文件的格式爲gpx,經過百度gpx文件格式。發現是一種gps交換數據的地圖格式文件

這裏能夠經過在線網址解析gpx格式文件出地圖。

放大發現每一個點都有序號,一共17個點,而後每一個點都對應一個國家的名稱,按照順序記錄下來git

統計出每一個座標點對應的國家城市名稱。
WP01-A - Bangladesh
WP02-B - India
WP03-C - Turkmenistan
WP04-D - Sudan
WP05-E - Chad
WP06-F - Thailand
WP07-G - France
WP08-H - Malesia
WP09-I - Afganistan
WP10-J - Pakistan
WP11-K - Turkey
WP12-L - Hungary
WP13-M - Egypt
WP14-N - Haiti
WP15-O - Angola
WP16-P - China
WP17-Q - Kazaksztan

發現前面7國家城市的首字母組合BITSCTF就是flag提交的格式首字母。那麼組合構成flag:BITSCTF{MAPTHEHACK},提交發現錯誤github

再次查看文件中有一段註釋是:Use appropriate brackets and underscores to separate words if you succeed(若是成功,請使用適當的括號和下劃線分隔字符)web

那麼從新用括號和下劃線分割符號組合flag.sql

最終flag爲:shell

BITSCTF{MAP_THE_HACK}



題目名稱:misc_pic_again
題目描述:
flag = `hctf{[a-zA-Z0-9~]*}`
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/719af25af2ca4707972c6ae57060238e.png
題目writeup:
方法一:
下載附件,得到一張圖片,經過stegsolve圖片隱寫工具查看圖片,嘗試通道查看並有發現和flag有關的,再次 嘗試查看圖片LSB隱寫(analyse----DATA Extract)對RGB和LSB數據分析。
這裏將紅藍綠設置爲0,並進行提取查看,發現開頭爲pk,這個是zip壓縮頭的格式。
將結果保存爲flag.zip文件
對其flag.zip解壓縮,得到一個1的文件

經過winhex或者記事本打開,根據題目描述,flag格式爲hctf開頭,搜索關鍵字"hctf"能夠看到文件中有包含flag


方法二:
經過zsteg圖片影寫工具對圖片進行分析,發現其中隱藏了一個zip文件
zsteg   flag.png

使用zsteg  -e   b1,rgb,lsb,xy 對flag.png LSB隱寫的壓縮文件進行提取,保存爲flag.zip
zsteg -e b1,rgb,lsb,xy  flag.png > flag.zip
對保存後的flag.zip進行解壓縮,解壓縮後獲得一個文件1,且經過strings命令對其搜索關鍵字hctf,可得到flag
strings  1 |grep  hctf
最終獲得flag:
hctf{scxdc3tok3yb0ard4g41n~~~}




題目名稱:low
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/15a04eedcabe43978bb692c21a0f1b52.rar
題目writeup:
下載附件,獲得這一張low.bmp圖片,經過stegsolve打開,分析lsb隱寫,無果,發現通道有問題
這裏直接經過腳本生成LSB隱寫顯示隱藏圖片:
import PIL.Image as Image
img = Image.open('low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width,height = img_tmp.size
for w in range(width):
for h in range(height):
if pix[w,h]&1 == 0:
pix[w,h] = 0
else:
pix[w,h] = 255
img_tmp.show()
將顯示圖片保存爲flag.jpg
經過QR Rearch二維碼掃描工具可得到flag內容
最終獲得flag:
flag{139711e8e9ed545e}

題目名稱:適合做爲桌面
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/1573d940d9bb47a083da6db70ffbffe0.rar
題目writeup:
下載附件,並解壓附件,獲得一張1.png圖片,經過stegsolve工具打開圖片,並查看通道,發如今red plane 1通道是顯示一張二維碼
將二維碼保存爲flag.png圖片
經過二維碼工具QE Reswarch對flag.png進行掃描,得到一串十六進制的字符串
03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000
將十六進制字符串保存到新建的flag文件中

經過winhex打開flag文件,而後轉換文件---十六進制ascii-->二進制
轉換成功後,發現文件中包含有1.py和1.pyt關鍵字,該文件爲pyc格式的文件
所以將其保存爲flag.pyc

這裏經過在線工具將flag.pyc文件進行反編譯成py文件
或者經過uncompyle6將flag.pyc反編譯成py文件
uncompyle6  flag.pyc  >flag.py
運行反編譯後的python文件,可得到flag(注意須要在末尾添加falg()以調用函數)
def flag():
str = [102,108,97,103,123,51,56,97,53,55,48,51,50,48,56,53,52,52,49,101,55,125]
flag = ''
for i in str:
flag += chr(i)
print flag
flag()
            
            
                     
            
            
最終flag爲:
flag{38a57032085441e7}



題目名稱:心儀的公司
題目描述:
小黑在拿到webshell後,立刻就得到了本身心儀公司的照片
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/31cc86285680418f8a1fb45951d25552.rar
題目writeup:
strings  webshell.pcapng  | grep  {
根據題目描述:小黑在拿到webshell後,立刻就得到了本身心儀公司的照片。猜想是找http包,而後分析包含照片的信息。
用wireshark打開包,過濾出http協議的包,不一會就能找到圖片中的flag



題目名稱:misc1
題目描述:d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd
題目writeup:
根據題目描述,發現是一串十六進制字符,直接轉換成ascii發現不行。 並且字符恰好是134位。能夠將其分爲兩個一組
payload = "d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd"
s = ""
for i in range(0,len(payload),2):
s += "0x"
s += payload[i:i+2]
s += ","

print s
獲得2個一組的十六進制:
0xd4,0xe8,0xe1,0xf4,0xa0,0xf7,0xe1,0xf3,0xa0,0xe6,0xe1,0xf3,0xf4,0xa1,0xa0,0xd4,0xe8,0xe5,0xa0,0xe6,0xec,0xe1,0xe7,0xa0,0xe9,0xf3,0xba,0xa0,0xc4,0xc4,0xc3,0xd4,0xc6,0xfb,0xb9,0xe1,0xe6,0xb3,0xe3,0xb9,0xe4,0xb3,0xb7,0xb7,0xe2,0xb6,0xb1,0xe4,0xb2,0xb6,0xb9,0xe2,0xb1,0xb1,0xb3,0xb3,0xb7,0xe6,0xb3,0xb3,0xb0,0xe3,0xb9,0xb3,0xb5,0xe6,0xfd,
0xd4此類的都是大於127的因此極可能是移位,並且要用減的,由於這裏的數字都比127來的大。
# encoding:utf-8
s = [0xd4,0xe8,0xe1,0xf4,0xa0,0xf7,0xe1,0xf3,0xa0,0xe6,0xe1,0xf3,0xf4,0xa1,0xa0,0xd4,0xe8,0xe5,0xa0,0xe6,0xec,0xe1,0xe7,0xa0,0xe9,0xf3,0xba,0xa0,0xc4,0xc4,0xc3,0xd4,0xc6,0xfb,0xb9,0xe1,0xe6,0xb3,0xe3,0xb9,0xe4,0xb3,0xb7,0xb7,0xe2,0xb6,0xb1,0xe4,0xb2,0xb6,0xb9,0xe2,0xb1,0xb1,0xb3,0xb3,0xb7,0xe6,0xb3,0xb3,0xb0,0xe3,0xb9,0xb3,0xb5,0xe6,0xfd]
for i in range(135):
flag = ""
for j in range(len(s)):
flag += chr(s[j]-i)
print("第%s移位:%s")%(i,flag)
或者
使用下面腳本將其每兩個分組十六進制,轉成十進制後-128(偏移量爲128),再轉成ascii碼獲得flag
import re
s = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7e2b6b1e4b2b6b9e2b1b1b3b3b7e6b3b3b0e3b9b3b5e6fd'
num = re.findall('\w{2}' ,s)
flag = ''
for i in num:
ch = chr(int(i,16)-128)
flag += ch
print(flag)
        
        
                 
        
        
最終獲得flag:
DDCTF{9af3c9d377b61d269b11337f330c935f}

數字像素隱寫
題目名稱:Miscellaneous-200
題目描述:[Flag在這裏!](flag.txt)
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/62f4ea780ecf4e6bbef5f40d674ec073.txt
題目writeup:
方法一:
下載附件獲得一個flag.txt文件,裏面有61366行,每行包含三個逗號分隔值的元組,大部分爲  255,255,255  這看起來像具備給定 RGB 值的圖像。
因而可推斷以此txt文件可繪製一幅圖片
圖像的尺寸多是:一、二、6一、12二、50三、100六、3068三、61366。最可能的圖像大小是 122×503px 或 503×112px。
那麼圖像的寬度和高度爲:
122*503或者503*122
經過python腳本將其文本(像素點)轉換成圖片:
# coding=utf8
from PIL import Image
x = 503
y = 122
img = Image.new('RGB',(503,122),"black")
f = open('flag.txt','r')
pix=[]
for i in range(61366):
a = f.readline()
a = a.replace('\n','')
pix.append(a)

#print pix
im = []
for i in range(len(pix)):
im.append(pix[i].split(','))

#print im
for i in range(x):#x = 503
for j in range(y):#y = 122
pix = (int(im[i*122+j][0]),int(im[i*122+j][1]),int(im[i*122+j][2]))
img.putpixel((i,j),pix)#寫某個像素位置的值

img.show()

方法二:
這裏咱們能夠將文本內容轉換成ppm格式,PPM格式詳見下面連接:
轉換後的flag.ppm格式說明:
          
          
                   
          
          
第一行:p3表示文件格式類型爲ascii
第二行:122  503  表示圖像的寬度和高度用ascii表示
第三行:最大像素值爲255字節表示,範圍爲0-255
第4行開始到6139行表示圖像數據:
按RGB的順序排列,RGB中間用空格隔開,圖片每一行用回車隔開。
https://github.com/g0tmk/write-ups/blob/master/defkthon-ctf/misc-200/flag.ppm

咱們經過命令 convert 將falg.ppm轉換爲 PNG,而後翻轉 + 旋轉》
convert -flip -rotate 90 flag.ppm flag.png
           
           
                    
           
           
可得到圖片,圖片中含有flag內容
              
              
                       
              
              
最終獲得flag:
flag{ youc@n'tseeme }


端口隱寫
題目名稱:Hidden-Message
題目描述:
藏的什麼信息?
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/8868f595665740159650d6e654aadc93.pcap
題目writeup:
下載附件,獲得一個流量數據包flag.pcap,此數據包用wireshark打開發現都是UDP協議,其中源端口末尾號一直變化(發現只有紅框位置0和1不斷變換 ),考慮到爲二進制,結合kali的tshark(wireshark命令版)和perl語法,將二進制數據
轉化以後的到flag
tshark -r  flag.pcap -Tfields -e udp.srcport #打印數據包UDP協議源端口
tshark -r  flag.pcap -Tfields -e udp.srcport | while read port; do echo -n ${port: -1}; done | tr 01 10 | perl -lpe '$_=pack"B*",$_'

最終獲得flag:
Heisenberg






題目名稱:Recover-Deleted-File
題目描述:
恢復磁盤而且找到FLAG.
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/c297795634cb4f6e8e1d88be044ec0c4.gz
題目writeup:
下載附件,並對附件解壓,得到一個disk-image文件

經過binwalk命令查看文件包含的屬性,發現是一個linux磁盤文件
binwalk disk-image
經過fls列出linux磁盤文件有哪些文件和操做記錄,能夠看到有一個目錄lost+found以及被刪除操做flag
fls disk-image
根據flag描述,須要磁盤數據還原,可經過 extundelete命令對其進行恢復,這裏能夠恢復出flag目錄
extundelete disk-image --restore-file /flag
或者
extundelete disk-image --restore-all
進入到恢復數據目錄,發現有一個flag文件, 修改flag執行程序,並執行flag,可得到flag內容
cd RECOVERED_FILES/
chmod +x flag
./flag
最終得到flag:
de6838252f95d3b9e803b28df33b4baa



下載附件,獲得一個flag.mkv文件,打開聽到一段奇怪的聲音,可能有flag有關,須要將視頻中的音頻文件提取出來。

這裏使用  MKVToolnixPortable對音頻進行提取,能夠看到2個mp3音頻文件,先導出第二個音頻文件,並保存爲flag.mp3(第一個mp3音頻文件,經過後面的音頻文件分析沒有包含flag內容)
經過音頻分析工具a udacity進行分析,查看頻譜圖,能夠看到有包含falg的內容,並非很清晰,須要視圖放大查看。

最終得到flag爲:
flag{fun_v1d30_mu51c}



題目名稱:很普通的數獨
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/dee83d60aeda4a8cae93c5aac8f8a2ff.zip
題目writeup:
下載附件,解壓附件獲得25張圖片, 把25張重合到一塊兒去,獲得一個完整的數組,可是沒有什麼用,想到25張數獨能夠組成5x5,是否是一張二維碼呢?
仔細觀察,若是把有數字的方格塗黑,下面三張圖片就是二維碼的三個定位碼,再注意到圖片數量爲25張,是5的平方,因此,這25張圖片組合起來就是一張二維碼
           
           
                    
           
           
觀察發現,一、五、21這三張圖片是定位塊,可是順序不對,將順序換爲五、2一、1
BugkuCTF-MISC-很普通的數獨5
因而把有數字的轉換成1,沒有數字的地方轉換成0,再按順序轉換成01,獲得下述數據將其保存爲f lag.txt:
111111101010101000101000001111110000101111111
100000101100111101010011101100011001001000001
101110101110011111010011111101000101001011101
101110101101100010001010000011110001101011101
101110100011100100001111101111111011101011101
100000101100100000011000100001110100001000001
111111101010101010101010101010101011101111111
000000000011001101001000110100110011100000000
110011100100100001111111100100101000000101111
101001001011111111101110101011110101101001100
100000111100100100000110001101001101010001010
001100010011010001010011000100000010110010000
010110101010001111110100011101001110101101111
100011000100011100111011101101100101101110001
001100110100000000010010000111100101101011010
101000001011010111110011011111101001110100011
110111110111011001101100010100001110000100000
110101000010101000011101101101110101101001100
010011111110001011111010001000011011101101100
011001011001010101100011110101001100001010010
010111111111101011111111101101101111111111100
011110001100000100001000101000100100100011110
111110101110011100111010110100110100101010010
110010001011101011101000111100000011100010000
101011111011100111101111111100001010111110010
110100011000111000100111101101111101000100010
111101111110001001000011010110001111110111110
011001010101000110010100010001000101101010001
011101110101101101100100001101101000111101001
110110001001101100010101101111110100101100110
000011100111000000000100001010101111100010010
111010010011110011101110010100001011111010010
101001100010111111110100000100001010101010100
000010011001001101110101001111100101111101101
000010111101110001101011000001000101110100110
011110011010100010100000011011000001110010000
100110100100001101111111101100101110111110011
000000001111110101101000101011100100100011010
111111100011111011011010101101110011101011110
100000101110101101101000111110010001100010001
101110101011100001111111101101001000111111011
101110100110111101101000001001101100011101101
101110100000011101100001101010110010010010001
100000101011001011111011001011000011010110000
111111101010101001111011110101101110000101101
使用python腳本轉換成圖片:
from PIL import Image
x = 45
y = 45
im = Image.new('RGB', (x, y))

with open('flag.txt') as f:
for i in range(x):
ff = f.readline()
for j in range(y):
if(ff[j] == '1'):
im.putpixel((i, j), (255,255,255))
else:
im.putpixel((i, j), (0,0,0))

im.save("flag.jpg")
          
          
                   
          
          
生成一張二維碼圖片
經過二維碼QR Research掃描圖片可得到一串base64的字符串
Vm0xd1NtUXlWa1pPVldoVFlUSlNjRlJVVGtOamJGWnlWMjFHVlUxV1ZqTldNakZIWVcxS1IxTnNhRmhoTVZweVdWUkdXbVZHWkhOWGJGcHBWa1paZWxaclpEUmhNVXBYVW14V2FHVnFRVGs9
7 次 base64 解碼獲得
https://base64.us/
最終獲得flag:
flag{y0ud1any1s1}


題目名稱:很普通的Disco
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/48dd5a182fcc477a9a83200d800e26db.zip
題目writeup:
下載附件,解壓附件獲得一個Disco.wav音頻文件,因而聯想和音頻隱寫有關
先用audacity打開,發現開頭有雜音,放大查看開頭
仔細的查了查,恰好有105個峯值頻率高低起伏的點。峯值高的點爲1,峯值低的點爲0。輸出出來是105個二進制數,每7個數爲一組,恰好15組,也就是15個字母。
輸出的二進制文件:
110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101

二進制位,8個二進制轉成一個字符。這裏只有105個,前七位1100110,是f的二進制形式。因此須要取出湊夠8位,將步長設置成7,而後 + 0,再轉成字符串

使用如下python腳本進行轉換成ascii:

s = '110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101'
flag = ''
for i in range(0,len(s),7):
flag += chr(int('0'+s[i:i + 7],2))
print(flag)

最終flag:
flag{W0W*funny}

題目名稱:miscmisc
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d037429cf055493b879ef09d9b59bd41.zip
題目writeup:
1.下載附件,對其進行解壓,獲得一張bugoucuci.png圖片,並經過binwalk對圖片文件進行查看文件包含屬性,發現圖片文件隱藏了zip和PN兩種文件。
經過foremost命令對 bugoucuci.png圖片進行分離,獲得2個壓縮文件和一個PNG圖片文件。其中2個壓縮文件的內容是同樣的,只須要分析其中一個壓縮文件就好了。
這裏對其中的一個壓縮文件00000090進行解壓,獲得一個chadiand.zip壓縮文件和一張chayidian.jpg圖片文件
直接解壓 chadiand.zip文件,提示須要輸入密碼。首先猜想多是爆破,可是爆破了十多分鐘也沒出密碼。說明密碼和爆破無關。
接着分析 chayidian.jpg圖片文件,經過binwalk命令發現圖片文件包含了一個壓縮文件和1張PNG圖片
經過foremost對 chayidian.jpg圖片文件進行分離,獲得一個00000318.zip壓縮文件。
00000318.zip壓縮文件進行解壓,獲得一個flag.txt文件,查看文件內容並非flag
根據解壓出來的flag.txt文件以及須要密碼解壓的chadiand.zip文件中也包含了一個flag.txt文件,猜想是須要用到明文攻擊才能解壓出 chadiand.zip文件
首先經過winrar壓縮軟件對flag.txt進行打包壓縮成flag.zip,而後對比其中CRC32的值,發現chadian.zip和flag.zip的 CRC32值是同樣的。那麼就能夠經過明文攻擊能夠解壓出 chadian.zip
這裏經過ARCHRP對 chadian.zip文件進行明文攻擊
等待十分鐘後,顯示加密密鑰已恢復成功
而後點肯定而後保存chadiand_decrypted.zip
chadiand_decrypted.zip進行解壓,獲得如下三個文件
解壓whoami.zip文件,提示須要輸入密碼,既然解壓獲得三個文件,那麼解壓的密碼必定和另外兩個文件有關。
打開world.png圖片文件,圖片內容中 發現有提示: pass in world. 此時想到密碼可能與此圖片還有world.doc文件有關,在kali下經過binwalk分析無果。
那麼考慮多是圖片的隱寫,因而打開stegsolve打開world.png文件,
而後試探各類通道,在LSB BGR條件下發現pass,因此這是LSB信息隱寫。獲得pass:z^ea,去解壓文件 發現不行

打開world.doc文件,顯示是一段提示內容:除了這個就差一點點了,並 根據提示 pass in world 猜測 world.doc 文件 可能還會有隱藏文字
勾選word選項中的隱藏的文字,就會顯示出幾行像密碼的 隱藏字符
到目前爲止,咱們從world1.png中獲得 pass:z^ea 在world.doc文件中獲得幾行隱藏的字符串。測試了z^ea+world.do每行中隱藏的字符串都不能解壓壓縮文件。
出題人真的是腦洞大開,誰會想到最後的密碼是 pass內容+world裏每行字符串的最後一個字符,
因而解壓密碼就是 :z^ea4zaa3azf8
經過該密碼解壓出whoami壓縮包,打卡壓縮包中的whoami.txt就獲得了flag內容。
最終flag爲:
flag{12sad7eaf46a84fe9q4fasf48e6q4f6as4f864q9e48f9q4fa6sf6f48}




題目名稱:flag_universe
題目描述:please find the flag in our universe!
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d2ced53c4a2e476995845c72bc39939d.zip
題目wirteup:
打開流量包,使用篩選器篩出ftp數據流,能夠看到經過ftp命令操做了universe.png和flag.txt以及new_universe.png圖片
其中對比較顯眼的 new_universe.png圖片進行TCP數據流追蹤

追蹤數據流在到TCP流爲10時,出現了一段base64字符串

對base64解密後獲得:flag{This is fake flag hahaha},提交顯示錯誤,該flag是假的flag



繼續追蹤TCP數據流,universe.png中也沒有flag,當追蹤到第14個TCP數據流時,有一個new_universe.png
經過原始數據格式保存爲flag.png
能夠看到成功導出了一張PNG圖片
經過stegsolve圖片隱寫工具進行查看,發現存在LSB隱寫,可得到flag內容
最終flag爲:
flag{Pla te_err_klaus_Mai l_Life}



題目名稱:奇怪的TTL字段
題目描述:咱們截獲了一些IP數據報,發現報文頭中的TTL值特別可疑,懷疑是通訊方嵌入了數據到TTL,咱們將這些TTL值提取了出來,你能看出什麼端倪嗎?
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/0bf565e00b864f4ba06efc858056c7e9.zip
題目writeup:
下載附件,對其解壓獲得一個ttl.txt文件,其內容就是一組ttl的值

該文本文件中的TTL值只有4種值:,而且根據題目的介紹咱們知道數據隱藏在這些值裏,那麼就比較容易想到的是信息隱藏在二進制中。

將這四個數值都轉換成二進制獲得 :11111111111十一、11111十一、10111111。 TTL 值爲一個 8 位整數,不足 8 位的二進制數開頭補 0,變爲 8 位。

即:00111111111111十一、01111十一、10111111

變的只有前面兩位,後面6位1不變,只有前面兩位藏了數據,也就是說一組TTL值能夠隱藏一個字節,提取開頭兩位爲:00110110,剛好爲全排列,能夠用於數據的存儲:

值(D) 二進制
63
255
127
191


TTL=127--》01

TTL=191--》10

TTL=127--》01

TTL=191--》10

獲得一個字母對應的8位即:01100110,即字母爲:f

若是傳輸4個就是一字節,取前面的2位組成8位,對照二進制字母表,能夠發現前面是ffd8,jpg圖片標誌

經過python腳本將ttl.txt提取轉換後的數據並保存爲圖片,是由於二進制轉成ASCII時發現是 jpg 文件格式。

f = open('ttl.txt','r')
TTL = f.readlines()
p = []
for i in TTL:
p.append(int(i[4:]))
s = ''
for i in p:
if i == 63:
a = '00'
elif i == 127:
a = '01'
elif i == 191:
a = '10'
elif i == 255:
a = '11'
s += a
print(type(s))
print(s)
import binascii
flag = ''
for i in range(0,len(s),8):
flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('res1.jpg','wb')
wp.write(flag)
wp.close()

獲得一張resq.jpg二維碼圖片:
經過binwalk命令查看二維碼圖片包含有6張圖片

並經過foremost分離出res1.jpg圖片
最終獲得6張殘缺的圖片,可拼圖爲一張二維碼圖片

用ps拼接成二維碼圖片

 

經過  QR resarch二維碼掃描工具讀取出內容出來:


其內容爲:
key:AutomaticKey cipher:fftu{2028mb39927wn1f96o6e12z03j58002p}
根據key的信息,能夠聯想到一種經常使用的加密,Automatic加密
經過在線 解密網站:
https://www.wishingstarmoye.com/ctf/autokey
最終flag爲:
flag{2028ab39927df1d96e6a12b03e58002e}


題目名稱:2-1
題目附件:
          
          
                   
          
          
基礎知識:
63/255/127/19100111111111111110111111110111111
           
           
                    
           
           
             
             
                      
             
             
          
          
                   
          
          
            
            
                     
            
            
89 50 4E 47 0D 0A 1A 0A 是PNG頭部署名域,表示這是一個PNG圖片
          
          
                   
          
          
            
            
                     
            
            
00 00 00 0D 描述IHDR頭部的大小
          
          
                   
          
          
            
            
                     
            
            
49 48 44 52 是Chunk Type Code, 這裏Chunk Type Code=IHDR
          
          
                   
          
          
            
            
                     
            
            
00 00 00 CE 00 00 00 CE 08 02 00 00 00 描述了Chunk Data,它是可變長度數據, 前四個字節(前8位)是寬度,後四個字節(後8位)節是高度。
          
          
                   
          
          
            
            
                     
            
            
F9 7D AA 93 是IHDR的CRC校驗
       
       
                
       
       
題目writeup:
下載附件,對其進行解壓獲得一張misc4.png圖片,可是沒法打開文件
經過winhex打開misc4.png圖片,發現PNG圖片文件頭開頭的 前 4位(80 59) 不對。
PNG (png),文件頭:89504E47 文件尾:AE 42 60 82
將其修改成89 50 並保存爲flag.png
依然打不開文件
經過tweakPNG工具查看png圖片 IHDR的CRC值,發現CRC值不對

把圖片文件IHDR 的crc校驗值 修改成  55 d5 f6 4f 後發現 仍是打不開




發現圖片的寬度爲0,須要 根據 crc校驗值 算出圖片的寬度(前8位爲圖像寬度,後八位爲圖像高度)

下面經過python 腳本算出圖片的寬度:
import os 
import binascii
import struct

misc = open("misc4.png","rb").read()

for i in range(1024):
data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x932f8a6b:
print (i)
獲得 709 ,十六進制轉換後獲得, 0x2c5
接下來咱們在winhex中將寬度字節改成 02 C5

保存爲falg2.png,打開圖片發現包含flag內容:
最終flag爲:
wdflag{Png_C2c_u_kn0W}



題目名稱:3-11
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d0430db27b8c4d3694292d9ac5a55634.png
題目writeup:
用 Steg­solve 打開,發現是 LSB 隱寫,開頭 PK是 zip 的文件頭
將其另存爲flag.zip,打開壓縮文件,發現文件已損壞
因而用winrar自帶的修復壓縮文件的功能進行修復壓縮文件

將修復好的文件保存爲 rebuilt.flag.zip,對其進行解壓,獲得一個flag.txt文件,文件內容爲base64
將base64經過在線工具進行解密,發現是一張PNG圖片
將其保存爲flag1.png圖片,發現沒法打開該文件

如何變成圖片呢,嘗試直接改後綴名根本不行,這時候想到能不能base64轉圖片呢,百度一下找到了在線網站,直接轉換獲得了答案

網站:https://tool.jisuapi.com/base642pic.html

最終flag:
FLAG{LSB_i5_SO_EASY}



題目名稱:互相傷害!!!
題目描述:flag 爲flag{XXX}內的XXX內容
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/0fb3ac2f54b7497cb35e04265c478b76.zip
題目writeup:
下載附件,解壓附件獲得一個文件flag
經過file命令查看flag文件屬性爲pcapng流量包文件

將其後綴名改成.pcapng
用Wireshark打開流量包,過濾http協議,發現存在多個jpg文件請求
經過導出http對象,將jpg文件所有提取出來
提取出共21個jpg文件,能夠看出所有爲鬥圖素材
首先分析圖15,發現其中包含了二維碼圖:
經過在線二維碼掃描(這裏使用QR Rearch掃描不起)可得到一串加密的字符串:
https://cli.im/deqr
U2FsdGVkX1+VpmdLwwhbyNU80MDlK+8t61sewce2qCVztitDMKpQ4fUl5nsAZOI7 bE9uL8lW/KLfbs33aC1XXw==
根據圖片文字提示「本發佈會由AES獨家贊助」那麼上面二維碼獲取的字符串爲AES加密的字符串。其中圖片上的文字「CTF"可能和AES解密的密鑰有關。可將CTF試做爲解密的密碼。
http://www.jsons.cn/aesencrypt/
獲得解密後的字符串:668b13e0b0fc0944daf4c223b9831e49
668b13e0b0fc0944daf4c223b9831e49 提交flag,發現提交失敗,顯然不是flag.
繼續經過binwalk對其餘文件進行依次分析,發現其餘圖片文件都包含有zip文件。
對其中任意一個圖片文件10.jpg進行分離獲得一個壓縮文件
解壓縮文件獲得一張二維碼圖片,並經過QR Rearch二維碼掃描工具,發現掃描出來的內容幾乎都是「扔下內衣真有一線生機???交出內褲纔有活路」
仔細觀察,圖5文字內容能夠簡單理解爲「扔下內衣,交出內褲」,觀察鬥圖素材發現圖11符合上述描述「來呀,互相傷害」這張圖也與題目名稱「互相傷害」有相同有關聯。 那麼就繼續對圖11重點分析
圖 5
圖11
經過foremost命令對其進行分離,獲得一個壓縮文件
可是解壓縮提取出來的壓縮文件,提示須要密碼
輸入上面解出來的字符串,可正常解開壓縮文件
可得到一張畫中畫的二維碼圖片

掃描圖二維碼獲得字符串:「扔下內衣真有一線生機????交出內褲纔有活路!!!!「。

發現二維碼中心還有一個二維碼,將小二維碼截取出來,掃碼獲得flag內容:

獲得flag:
flag{97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758}
可是根據題目描述,flag 爲flag{XXX}內的XXX內容
最終flag爲:
97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758

題目名稱:簽到題
題目描述:
SSCTF線上選舉美男大賽開始了,泰迪拿着他的密碼去解密了,提交花括號內內容(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)
題目writeup:
根據描述,那麼falg提交的格式爲ssctf{}或者flag{}, 根據flag提交格式,所以最終的 字符串必然是被柵欄密碼加密過的
提交花括號內容: Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==
經過ctfcarckt00ls對其進行base64解密:
獲得base64解密字符串:
ggQ@gQ1fqh0ohtjpt_sw{gfhgs#}
上段密文的開頭是g因此必然還要通過以此凱撒密碼加密的
經過對其凱撒解密,移位14獲得看起來像FLAG格式的開頭的SSC
獲得 位移14的凱撒解密爲:
ssC@sC1rct0atfvbf_ei{srtse#}
再柵欄密碼解密,每組字數8,第二欄就是ctf內容:
最終ctf結果爲:
ssctf{ssCtf_seC10ver#@rabit}



題目名稱:隱藏的信息
題目描述:
這是一個被混淆的文件,可是我忘記了這個文件的密碼。你可以幫助我還原明文嗎?
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/2eb44acfc89d4f0f9fa221d21ab96033.zip
wireup:
方法一:
1.下載附件,解壓附件獲得一個message.txt文本文件,打開文件發現內容是一串八進制的數字,須要將其轉換成ascii

2.經過 python腳本將八進制數字轉換成ascii
import re
import sys
s='0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113 '
a=re.findall('\d{3,}',s)
for i in a:
sys.stdout.write(chr(int(i,8)))
獲得ascii:V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K,該字符串看起來像base64加密
經過ctfcarckt00ls工具的base64解密功能對其解密,獲得flag

方法二:
使用「八進制 十進制 ASCII相互轉換【支持多個字符串】」工具解—>輸入內容—>八進制轉換ASCII
獲得asccii:
V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K
base64解密:
https://base64.us/

最終獲得flag:
ISCC{N0_0ne_can_st0p_y0u}


題目名稱:saleae
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/5621c80acfbc445d9eb252b2660070b5.zip
題目writeup:
下載附件,對其進行解壓獲得一個 saleae.logicdata 文件,該文件爲邏輯分析儀數據文件。經過谷歌搜索是須要用Logic軟件打開,打開文件發現有4個channel,其中channel 0和channel 2有波形。
Logic 軟件下載地址:https://downloads.saleae.com/logic/1.2.18/Logic+1.2.18+Win+64+Standalone.zip
在analyzers新建一個SPI項目
參數設置以下,其中MOSI是主輸出從輸入,MISO是主輸入從輸出:

channel 0:規律性,等寬,是 CLK

channel 1:無波形,是主輸出端 MOSI

channel 2:波形寬度不一,攜帶數據,爲主輸入端 MISO

channel 3:數據傳輸是低電平,爲CS偏選端

直接豎着查看,可得到flag
flag最終爲:
flag{12071397-19d1-48e6-be8c-784b89a95e07}


題目名稱:intoU
題目描述:
I'm so into you I can barely breath.And all I wanna do is to fall in deep (IntoU歌曲歌詞)
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/d7351710703a49cda273d3284e7a3df1.zip
題目writeup:
下載附件,對其進行解壓獲得一個音頻文件,經過Audacity打開音頻文件進行分析,首先選擇頻譜圖,看了大半天也沒發現有flag.
經過谷歌搜索,發現須要調整到較小的採樣率,纔有可能顯示音頻隱寫,下面將其採樣率設置爲8000 HZ
Ariana Grande---->頻譜圖—>採樣率—>8000 HZ
拖動滾動條到最右邊,並視圖--放大,可查看到flag內容
最終得到flag:
RCTF{bmp_file_in_wav}



題目名稱:Excaliflag
題目描述:
只有一個真正的黑客能夠從這個地方獲得flag
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/f3f30930116f4b168e132db45907d0ee.png
題目wireup:
首先下載附件,解壓得到一張圖片,經過stegsolve圖片隱寫工具打開,而後切換色塊,終得到flag內容:
最終獲得flag:
3DS{Gr4b_Only_th1s_B1ts}


題目名稱:Just-No-One
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7932f0a447b74cfc8b6820aa706e9446.exe
題目writeup:
下載附件,得到一個exe可執行程序,點擊安裝,進入下一步,須要輸入密碼,猜想可能須要逆向破解密碼

嘗試經過winhex和IDA分析無果


仔細觀察,在安裝軟件協議的條款裏面發現了一些關於和flag有關的信息:YOU MAY SUBMIT THIS TO GET TEN POINTS(你能夠提交這段字符串得到標識)。

YOU MAY SUBMIT THIS TO GET TEN POINTS:  ILOVEREADINGEULAS
那麼最終flag爲:
ILOVEREADINGEULAS


題目名稱:信號很差先掛了
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/b90a71f6e04b427dba2f8d307de79145.zip
題目writeup:
下載附件,對其進行解壓,得到一張apple.png圖片,經過stegsolev圖片隱寫工具的analyse---data extract功能對圖片的LSB進行查看分析
發現圖片的LSB隱寫中包含了PK,該PK爲壓縮數據包頭。
將其保存爲flag.zip
對flag.zip進行解壓,發現壓縮文件已損壞

經過winrar的修復壓縮文件功能對已損壞的flag.zip壓縮文件進行修復

保存爲rebuilt.flag.zip,並對其進行解壓,得到一張pen.png圖片
再次經過stegsolve對pen.png圖片進行通道查看,發現好幾個通道中都有一些條紋
而後兩張圖片長得同樣,因此很容易想到多是藏有盲水印,因而用opencv處理盲水印獲得flag。

合成盲水印圖,盲水印用到的py腳本能夠在github上下載,https://github.com/chishaxie/BlindWaterMark,使用時須要安裝前置opencv-python庫

python  bwm.py  decode  pen.png  apple.png   flag.png

打開合成的盲水印圖片flag.png,可看到flag內容:
最終flag爲:
unctf{9d0649505b702643}


題目名稱:黃金六年

題目附件:

https://adworld.xctf.org.cn/media/task/attachments/b6c6823cbfc246249941630e647bf7b6.zip

題目writeup:

下載附件,對其解壓獲得一個mp4視頻文件,經過winhex打開,發如今末尾隱藏的base64加密字符串

也能夠經過strings命令查看文件中包含的字符串
strings  hj6.mp4
獲得base64加密字符串:
UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQAD
Dx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEf
JkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA==
經過在線解密工具,解密得到看起來像rar文件
https://base64.us
這裏經過python腳本將base64轉換成rar壓縮包:
import base64
code = "UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=="
r = base64.b64decode(code)
file = open("flag.rar", "wb")
file.write(r)
file.close()
打開壓縮包,發現須要輸入密碼,經過爆破也沒解密出來,解密密碼可能和視頻中的圖片有關。
經過free video to jpg converter,將視頻中的圖片提取出來
下載地址:https://secure-sc-dvdvideosoft.netdna-ssl.com/FreeVideoToJPGConverter_5.0.101.201_o.exe

獲得316張圖片,經過仔細查看,發現有4張圖片裏面包含了二維碼
下面是提取出含有二維碼的4張圖片,並對4張圖片中的二維碼單獨截圖出來,經過QR Rearch進行掃描,並得到4個KEY的密碼字符串。







作這種題目着實應該把屏幕調亮一點,最後一張二維碼找了很久死活找不到,調亮了屏幕以後就立馬找到了。

將二維碼掃描得到的4個KEY的字符串按照屬性 拼接獲得解壓密碼key:iwantplayctf
輸入iwantplayctf密碼對flag.zip進行解壓縮,得到flag.txt
打開flag.txt得到flag

最終flag爲:
roarctf{CTF-from-RuMen-to-RuYuan}

題目名稱:打開電動車
題目描述:
截獲了一臺電動車的鑰匙發射出的鎖車信號,3分鐘以內,我要得到它地址位的所有信息。flag內容二進制表示便可
題目附件:
https://adworld.xctf.org.cn/media/uploads/task/3d93f0c47ad94e31882e0a670eb6f5cf.zip
題目writeup:
下載附件,對其解壓,獲得一個音頻文件,經過Audacity打開音頻文件,而後經過視圖---放大查看波形圖。
能夠看到短波和長波

短波爲0,長波爲1,轉換獲得 01 字符串:
0    011101001010101001100010
根據題目信息說須要地址位的所有信息
查資料獲得:信號是由同步引導碼,地址位和數據位構成
固定碼遙控信號的構成:

一個是PT226x的,前面4bit表示同步碼,中間的8bit表示地址碼,後面的4bit表示功能碼,後面最後一個是中止碼
一個是PT224x的,前面8bit表示同步碼,中間的20bit表示地址碼,後面的4bit表示功能碼,後面最後一個是中止碼
PT226X和PT224X不一樣之處,PT226X 中不可能出現10這種狀況 ,這道題就是PT224X.
鑰匙信號(PT224X) = 同步引導碼(8bit) + 地址位(20bit) + 數據位(4bit) + 中止碼(1bit)
仔細查看波形圖獲得以下:

因此去掉前面的同步碼0和後面的數據位0010獲得所有20bit地址位以下:
 01110100101010100110
最終flag:
flag{ 01110100101010100110}

題目名稱:hong
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/3fce1ffa2af0438f82c38e321d3d3032.rar
題目writeup:
下載附件,對其解壓,獲得一個hong.mp3的音頻文件,經過binwalk分析音頻文件包含的文件,能夠看到包含有jpeg圖片文件
binwalk hong.mp3
經過foremost命令對hong.mp3文件進行分離,獲得2個圖片文件
foremost hong.mp3
首先查看0000161.jpg文件,發現是一張二維碼圖片
經過QR Rearch二維碼識別工具對 0000161.jpg文件進行掃描識別,獲得一串十六進制字符串
經過在線網站https://ab126.com,對十六進制字符串進行轉換爲ascii,解密出來是亂碼,無用。
03f30d0ad41db4576300000000000000000100000040000000730d0000006400008400005a00006401005328020000006300000000030000000700000043000000734b0000006401006402006403006404006405006406006407006707007d00006408007d0100781e007c0000445d16007d02007c01007400007c0200830100377d0100712800577c010047486400005328090000004e694d0000006972000000692e0000006948000000696f000000696e0000006967000000740000000028010000007403000000636872280300000074030000007374727404000000666c6167740100000069280000000028000000007304000000612e7079520300000001000000730a00000000011b0106010d0114024e280100000052030000002800000000280000000028000000007304000000612e707974080000003c6d6f64756c653e010000007300000000
最後查看另外一張00000269.jpg圖片,發現圖片中包含有flag內容
最終flag爲:
BCTF{cute&fat_cats_does_not_like_drinking}



題目名稱:3-1

題目附件:

https://adworld.xctf.org.cn/media/task/attachments/e395d6e5b79b4cc49ee4e5c704f872ae

題目writeup:

下載附件,對其進行解壓,獲得一個二進制文件flag,經過file命令查看二進制文件flag,發現文件格式爲rar壓縮包

file flag

將其二進制文件flag 重命名爲flag.rar,並對壓縮文件進行解壓,獲得一個文件flag1
再次經過file命令查看falg1的文件格式爲pcapng
file flag1
將flag1重命名爲flag1.pcapng,並經過wireshark打開。搜索關鍵字falg,發如今http協議中有flag.zip和flag.txt進行get 請求。猜想flag和這2個文件有關。
經過wireshark的導出對象---http功能可導出http請求全部的文件內容。
這裏導出http請求的全部對象保存到flag文件夾下

導出來2個文件分別爲receiver和flag.zip,並對flag.zip進行解壓縮,發現須要密碼,解壓密碼須要在流量包中分析得到。
接下繼續分析流量包,對flag.rar http get 請求處進行追蹤流--tcp流分析
追蹤 TCP 流 6 時,發現一些linux操做命令和一段 python 代碼。
Linux 系統帳戶爲 root,密碼爲 jfm,嘗試用 jfm 解壓失敗,接下來執行 ls,cd tf/ cd wireshark/,ls 命令。 執行 cat 1 時獲得 rar 文件內容, 執行 cat 2,獲得 base64 編碼,解碼發現亂碼,嘗試直接用於解壓,失敗 執行 cat 3,獲得 一段 python 代碼,代碼中有 AES,猜想是須要解密 其中,那個base64應該就是密文base64加密以後的字符串。
該python是一個經過AES的CBC模式將字符串進行加密或解密的腳本,其中IV是密鑰也是偏移量
# coding:utf-8
from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64

IV = 'QWERTYUIOPASDFGH'
def decrypt(encrypted):
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.decrypt(encrypted)
def encrypt(message):
length = 16
count = len(message)
padding = length - (count % length)
message = message + '\0' * padding
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.encrypt(message)
str = 'this is a test'
example = encrypt(str)
print(decrypt(example))
對上面python 代碼進行修改 ,並對其編 碼 用 base64 解 碼 後 解 密 ((注意要先用base64解碼才能進行AES-CBC解密):
# coding:utf-8
__author__ = 'YFP'
from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64
IV = 'QWERTYUIOPASDFGH'
def decrypt(encrypted):
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.decrypt(encrypted)
def encrypt(message):
length = 16
count = len(message)
padding = length - (count % length)
message = message + '\0' * padding
aes = AES.new(IV, AES.MODE_CBC, IV)
return aes.encrypt(message)
str = 'this is a test'
example = encrypt(str)
print(decrypt(example))
#增長以下兩行
a='19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo='
print(decrypt(base64.b64decode(a)))
執行修改後的python 腳本,獲得base64的AES解密字符串爲: No_One_Can_Decrypt_Me,並將該字符串做爲密碼對flag.zip進行解壓縮
成功解壓出flag.txt,打開flag.txt,得到flag

最終flag爲:
WDCTF{Seclab_CTF_2017}





wdflag{My_c4t_Ho}
題目名稱:4-2
題目描述:
格式爲flag{xxxxxxxx}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/1ddbc89c20c845928498c22cd3faf1c4.txt
題目writeup:
下載附件 ,獲得一個.txt文件,打開文件發現下面幾個標紅的字母具備必定頻率數
經過詞頻分析獲得flag,附在線分析網站:https://quipqiup.com
獲得flag: classical-cipher_is_not_security_hs
根據題目描述,提交的flag格式,最終flag爲:
flag{classical-cipher_is_not_security_hs}



題目名稱:5-1
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/badd3e0621ff43de8cf802545bbd3ed0
題目writeup:
下載附件,對其進行解壓,獲得一個二進制文件flag,經過命令file查看文件類型,並無發現文件類型
file flag
經過winhex打開flag文件,發現字符是加了密,猜想可能xor加密
這裏經過xortool( https://github.com/hellman/xortool)對flag文件進行分析.
xortool.py是基於python的腳本,用於完成一些xor分析,包括:1. 猜測key的長度;2. 猜測key的值;3. 解密一些通過xoe加密的文件.
下面查看flag的xor加密的密鑰長度,能夠看到佔比最大的百分百就是密鑰長度爲13
xortool flag

xortool  flag  -l 13  -c  20
參數解釋:
其中-l就是指定密鑰長度,-c表示出現頻率最高的字符。字符出現的最高頻率通常爲20
嘗試出了key:GoodLuckToYou(根據經驗將試出來的),經過如下python腳本對原文件進行異或解密:
import os

c = open("flag",'rb').read()
key = "GoodLuckToYou"
def xor(c,k):
keylen = len(k)
res = ""
for pos,c in enumerate(c):
res +=chr(ord(c) ^ ord(k[pos % keylen]))
return res
print xor(c,key)
運行python腳本獲得一串字符串,其中字符串中就包含有flag內容
最終 flag爲:
wdflag{You Are Very Smart}


連環套娃壓縮包破解之音頻隱寫
題目名稱:Miscellaneous-300
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/f932f55b83fa493ab024390071020088.zip
題目writeup:
下載附件對其解壓,獲得一個壓縮文件flag.zip,對其進行解壓,提示須要輸入密碼,猜想須要對其壓縮包進行密碼爆破
經過ziperello對壓縮包進行爆破
發現爆破出來的密碼是46783,密碼正好是裏面壓縮包名稱。

經過該密碼對壓縮包進行解壓,可成功解密
解壓完了,又出現了一個新的壓縮包,解壓壓縮包,又提示須要輸入密碼

接着,按照上面的爆破壓縮包密碼的方法進行爆破

結果發現密碼就是壓縮包內文件名。發現的規律是:解壓裏面又是個壓縮包,解壓一波,發現又是一個壓縮包,後一個文件名的名字是前一個壓縮包的解壓密碼。

讓咱們編寫一個sh 腳本,並調用fcrackzip命令遞歸地破解和提取zip文件:

crack_zip.sh:


#!/usr/bin/env bash

while [ -e *.zip ]; do

  files=*.zip;

  for file in $files; do

    echo -n "Cracking ${file}… ";

    output="$(fcrackzip -u -l 1-6 -c '1' *.zip | tr -d '\n')";

    password="${output/PASSWORD FOUND\!\!\!\!: pw == /}";

    if [ -z "${password}" ]; then

      echo "Failed to find password";

      break 2;

    fi;

    echo "Found password: \`${password}\`";

    unzip -q -P "${password}" "$file";

    rm "${file}";

  done;

done;


執行sh腳本:

bash crack_zip.sh

讓它執行一段時間後,最後會獲得一個12475.zip,發現純數字密碼爆破失敗,這個一個複雜的密碼加密的壓縮包

經過fackzip的複雜密碼對其進行爆破,發現爆破出來的密碼爲:boyzz

./fcrackzip -u -c a1 -l 1-6 12475.zip

經過unzip對12475.zip進行解壓,獲得一個音頻文件mess.wav

unzip -q -P b0yzz 12475.zip

經過音頻隱寫工具Audacity打開音頻文件mess.wav,並選擇頻譜圖,就能夠查看到flag的內容。



最終 falg爲:

BallsRealBolls


題目名稱:雙色塊

題目附件:

https://adworld.xctf.org.cn/media/task/attachments/45663022307c456897d30639f56da759.zip

題目writeup:

方法一:

下載附件,對其解壓,獲得一個out.gif的動態圖片,且只存在綠色和紫色兩個顏色,分佈不均勻

經過binwalk命令查看圖片隱藏的文件,能夠看到隱藏了png圖片
binwalk out.gif
經過foremost命令對out.gif進行分離,可到一個00001436.png圖片
foremost out.gif
查看分離的圖片,發現圖片的內容爲key:ctfer2333,猜想和flag有關,且 分析這張圖片無異常。
經過GifSplitter將out.gif文件進行分幀處理
獲得576張圖片,全部圖片中只有紫色和綠色兩種顏色,應該對應的是1和0或者0和1,可轉換成01二進制數據

按照紫色1,綠色0的規則按照前後順序排列出瞭如下數據:

011011110011100001000100011011000111100001001011001010110100100000111000011101110111001101101001010110000110010100101111010001010101001001000110011100000100000101001101011000010100001001010000011010010100100101100011011010100011000101110011010010000111100101000111010011110100110101101101010100010100010001101011010010110010101101110101010110000111001101010110010110100110011101110010011001010011010101000100010100110101100001110111001111010011110101101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000011010000110100001101000

每八個一組轉換成ascii字符。那麼經過在線工具二進制轉asciii, http://www.txttool.com/wenben_binarystr.asp,可獲得ascii爲:o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh

按照紫色0,綠色1的規則排列出如下數據:

100100001100011110111011100100111000011110110100110101001011011111000111100010001000110010010110101001111001101011010000101110101010110110111001100011111011111010110010100111101011110110101111100101101011011010011100100101011100111010001100101101111000011010111000101100001011001010010010101011101011101110010100101101001101010010001010101001111000110010101001101001011001100010001101100110101100101010111011101011001010011110001000110000101100001010010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111100101111001011110010111

同理,按照上面方面,獲得一些亂碼字符,顯然不是咱們想要的加密字符串。

獲得的加密字符串:

o8DlxK+H8wsiXe/ERFpAMaBPiIcj1sHyGOMmQDkK+uXsVZgre5DSXw==hhhhhhhhhhhhhhhh

這應該是des加密或者base64,可是有提示key,因此應該是des加密,key是上面的圖片內容ctfer2333,正常來講des結尾是=,最後一串h去掉就行了。

而後到http://tool.chacuo.net/cryptdes解密




方法二:
gif輪播以後發現是⼀個24* 24的像素點,每一個像素爲10 10,每一個點顏⾊爲00ff00或是ff00ff 先把gif分離成單幀,那麼能夠經過 python腳本對其進行分割成不一樣的單幀圖像。
# ! /usr/bin/env python2
# -*- coding: utf-8 -*-

import os
from PIL import Image


def main(gif_file):
png_dir = 'C:\\Users\\backlion\\Desktop\\flag\\'
img = Image.open(gif_file)
while True:
current = img.tell()
img.save(png_dir + str(current + 1) + '.png')
img.seek(current + 1)

if __name__ == '__main__':
gif_file = 'out.gif'
main(gif_file)
而後讀取每一個png中的對應點的信息,並按照8bit轉換爲ascii
#! /usr/bin/env python2
# -*- coding: utf-8 -*-

import os
from PIL import Image


def main():
png_dir = 'C:\\Users\\backlion\\Desktop\\flag\\'
ret = ""
for i in range(0, 24):
line = ""
for j in range(0, 24):
file_name = "C:\\Users\\backlion\\Desktop\\flag\\" + str(i * 24 + j + 1) + ".png"
x = j * 10 + 5
y = i * 10 + 5
img = Image.open(file_name)
img = img.convert("RGB")
img_array = img.load()
r, g, b = p = img_array[x, y]
if g == 255:
line += "0"
if r == 255 and b == 255:
line += "1"
if len(line) == 8:
ret += chr(int(line, 2))
line = ""
print ret


if __name__ == '__main__':
main()



最終flag爲:
flag{2ce3b416457d4380dc9a6149858f71db}


題目名稱:Py-Py-Py
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/58cadd8d8269455ebc94690fd777c34a.pyc
題目writeup:
下載附件,獲得一個pyc文件,經過uncompyle6命令將其反編譯成python腳本
uncompyle6 flag.pyc>flag.py
其中flag.py是一個rc4的加密解密python腳本:
# uncompyle6 version 3.7.4
# Python bytecode 3.6 (3379)
# Decompiled from: Python 2.7.18 (default, Feb 27 2021, 08:40:44)
# [GCC 10.2.1 20210110]
# Warning: this version of Python has problems handling the Python 3 "byte" type in constants properly.

# Embedded file name: pystego.py
# Compiled at: 2017-08-01 00:44:47
# Size of source mod 2**32: 1961 bytes
import sys, os, hashlib, time, base64
fllag = '9474yeUMWODKruX7OFzD9oekO28+EqYCZHrUjWNm92NSU+eYXOPsRPEFrNMs7J+4qautoqOrvq28pLU='

def crypto(string, op='encode', public_key='ddd', expirytime=0):
ckey_lenth = 4
public_key = public_key and public_key or ''
key = hashlib.md5(public_key).hexdigest() ##將public_key以MD5方式加密,再轉化成十六進制
keya = hashlib.md5(key[0:16]).hexdigest()
keyb = hashlib.md5(key[16:32]).hexdigest()
keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
key_lenth = len(cryptkey)
string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
string_lenth = len(string)
result = ''
box = list(range(256))
randkey = []
for i in xrange(255):
randkey.append(ord(cryptkey[(i % key_lenth)]))

for i in xrange(255):
j = 0
j = (j + box[i] + randkey[i]) % 256
tmp = box[i]
box[i] = box[j]
box[j] = tmp

for i in xrange(string_lenth):
a = j = 0
a = (a + 1) % 256
j = (j + box[a]) % 256
tmp = box[a]
box[a] = box[j]
box[j] = tmp
result += chr(ord(string[i]) ^ box[((box[a] + box[j]) % 256)])

if op == 'decode':
if result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0:
if result[10:26] == hashlib.md5(result[26:] + keyb).hexdigest()[0:16]:
return result[26:]
return
else:
return keyc + base64.b64encode(result)


if __name__ == '__main__':
while True:
flag = raw_input('Please input your flag:')
if fllag == crypto(fllag, 'decode'):
print('Success')
print crypto(fllag, 'decode')
break
else:
continue
# okay decompiling flag.pyc

根據腳本分析,在原flag.py腳本基礎上,直接把下面這段代碼刪除了,再添加一句 print crypto(fllag,'decode')就能夠修改爲解密腳本。
if __name__ == '__main__':
    while True:
        flag = raw_input('Please input your flag:')
        if flag == crypto(fllag, 'decode'):
            print('Success')
            break
        else:
            continue
最終修改後的解密腳本爲:
# uncompyle6 version 3.7.4
# Python bytecode 3.6 (3379)
# Decompiled from: Python 2.7.18 (default, Feb 27 2021, 08:40:44)
# [GCC 10.2.1 20210110]
# Warning: this version of Python has problems handling the Python 3 "byte" type in constants properly.

# Embedded file name: pystego.py
# Compiled at: 2017-08-01 00:44:47
# Size of source mod 2**32: 1961 bytes
import sys, os, hashlib, time, base64
fllag = '9474yeUMWODKruX7OFzD9oekO28+EqYCZHrUjWNm92NSU+eYXOPsRPEFrNMs7J+4qautoqOrvq28pLU='

def crypto(string, op='encode', public_key='ddd', expirytime=0):
ckey_lenth = 4
public_key = public_key and public_key or ''
key = hashlib.md5(public_key).hexdigest()
keya = hashlib.md5(key[0:16]).hexdigest()
keyb = hashlib.md5(key[16:32]).hexdigest()
keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
key_lenth = len(cryptkey)
string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
string_lenth = len(string)
result = ''
box = list(range(256))
randkey = []
for i in xrange(255):
randkey.append(ord(cryptkey[(i % key_lenth)]))

for i in xrange(255):
j = 0
j = (j + box[i] + randkey[i]) % 256
tmp = box[i]
box[i] = box[j]
box[j] = tmp

for i in xrange(string_lenth):
a = j = 0
a = (a + 1) % 256
j = (j + box[a]) % 256
tmp = box[a]
box[a] = box[j]
box[j] = tmp
result += chr(ord(string[i]) ^ box[((box[a] + box[j]) % 256)])

if op == 'decode':
if result[0:10] == '0000000000' or int(result[0:10]) - int(time.time()) > 0:
if result[10:26] == hashlib.md5(result[26:] + keyb).hexdigest()[0:16]:
return result[26:]
return
else:
return keyc + base64.b64encode(result)

print crypto(fllag,'decode')

執行腳本,獲得 flag 的值:The challenge is Steganography, 直接提交不對,加flag{}提交仍然也不對。
根據腳本解密獲得The challenge is Steganography,是pyc的隱寫,百度到在pyc中隱藏payload的工具爲stegosaurus。
經過 stegosaurus腳本查看隱藏在flag.pyc中的字符串
./stegosaurus   -x flag.pyc
最終 flag:
Flag{HiD3_Pal0ad_1n_Python}


題目名稱:warmup
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/b7b7e994d7fb4316b03f446295cfd03b.zip
題目writeup:
下載附件,對其進行解壓,獲得一個png圖片以及一個壓縮包文件
對壓縮包進行解壓提示須要輸入密碼,這裏猜想可能須要爆破壓縮包密碼或者明文攻擊、
打開壓縮包預覽,發現其中包含的圖片文件和附件解壓獲得的圖片文件名稱是一致的。猜想須要用到明文攻擊。
這裏首先對open_forum.png圖片經過winrar對其壓縮成文件open_forum.zip
同時查看到 open_forum.zip文件的CRC232值和須要密碼解密的壓縮包文件warmup.zip的CRC232的值同樣。那麼warmup.zip壓縮包解壓存在明文攻擊。
經過ARCHRP攻擊對 warmup.zip進行明文攻擊

這裏可能徹底解密成功須要一夜,實際須要不了那麼多少,在10分鐘左右就能夠終止。
終止壓縮包爆破後,可肯定直接保存爲warmup_decrypted.zip文件。
warmup_decrypted.zip文件進行解壓縮,成功解壓出三張圖片,其中fuli.png和fuli2.png圖片顯示是同樣的。
經過stegsolve對其fuli.png圖片進行通道查看,並無發現啥。
再次經過 stegsolve對其fuli2.png進行通道查看,發現出現一些
根據以上判斷,2張圖片存在盲水印。

合成盲水印圖,盲水印用到的py腳本能夠在github上下載,https://github.com/chishaxie/BlindWaterMark,使用時須要安裝前置opencv-python庫

經過bwm.py腳本能夠將2張圖片合成一張圖片flag.png

python  bwm.py  decode  pen.png  apple.png   flag.png

打卡flag.png圖片,能夠看到flag內容
最終flag爲:
flag{bWm_Are_W0nderfu1}

題目名稱:傳感器1
題目描述:
已知ID爲0x8893CA58的溫度傳感器的未解碼報文爲:3EAAAAA56A69AA55A95995A569AA95565556 此時有另外一個相同型號的傳感器,其未解碼報文爲:3EAAAAA56A69AA556A965A5999596AA95656 請解出其ID,提交格式爲flag{xxx}
題目writeup:
基礎知識:
曼徹斯特編碼(Manchester Encoding),也叫作相位編碼( Phase Encode,簡寫PE),是一個同步時鐘編碼技術,被物理層使用來編碼一個同步位流的時鐘和數據。
它在以太網媒介系統中的應用屬於數據通訊中的兩種 位同步方法裏的自同步法(另外一種是外同步法),即接收方利用包含有同步信號的特殊編碼從信號自身提取同步
信號來鎖定本身的時鐘脈衝頻率,達到同步目的。
IEEE 802.4(令牌總線)和低速版的IEEE 802.3(以太網)中規定, 按照這樣的說法, 01電平跳變表示1, 10的電平跳變表示0。
方法一:

先把16進制3EAAAAA56A69AA55A95995A569AA95565556都轉成2進制,獲得:
1111101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

又得知曼切斯特是從低到高跳變表示「1」,從高到低跳變表示「0」,即01->1,10->0。能夠看到二進制除了前4位,後面都是10,01,差分曼切斯特有跳變爲"0",無跳變爲"1

那麼實際上轉換成的二進制爲(去掉前面最前面1111):
101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

所以將編碼進行曼切斯特解碼:

00000000001001001101100010001001001111001010010110000100000110000001

轉成16進制獲得:
24d8893ca584181

又得知第一個ID爲0x8893CA58的溫度傳感器就在第一個曼切斯特解碼24d8893ca584181中,是第4位到11位爲:8893ca58,轉換成大寫爲8893CA58

根據上面原理,可將3EAAAAA56A69AA556A965A5999596AA95656,轉換成曼切斯特解碼爲24d8845abf34119,取第4位到11位,最終爲:8845ABF3

那麼flag爲:

flag{8845ABF3}

方法二:

python腳本(這裏須要將3E前綴去掉,由於轉換成二進制爲1111,不存在曼切斯特解碼特性)

char = "AAAAA56A69AA556A965A5999596AA95656"
result = char.replace("5","0101").replace("6","0110").replace("9","1001").replace("A","1010")
num = len(result)
flag = ""
flag_final = ""
result = "0"+result
for i in range(1,num,2):
if result[i:i+2][0] !=result[i-1]:
flag += "0"
if result[i:i+2][0] ==result[i-1]:
flag += "1"
print hex(int(flag,2)).upper()[2:]

或者:
id1 = 0x8893CA58
msg1 = 0x3EAAAAA56A69AA55A95995A569AA95565556
msg2 = 0x3EAAAAA56A69AA556A965A5999596AA95656

def calc(msg):
id=''
s = bin(msg)[6:]
for i in range(2, len(s), 2):
if s[i-2:i] == s[i:i+2]:
id += '0'
else:
id += '1'
return hex(int(id, 2)).upper()

print(calc(msg1))
print(calc(msg2))

能夠看到id是取結果的4到11位,ID爲: 8845ABF3
最終flag爲:
flag{8845ABF3}

題目名稱:halo
題目描述:
答案的格式爲flag{XXXX}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/56afc3a6c8d04cde8b1354b77fe91731.zip
題目writeup:
下載附件,對其進行解壓獲得一個txt文件,文件內容看來像base64加密
經過在線base64解密網站對其進行base64解密,獲得特殊的字符串:igq4;441R;1ikR51ibOOp,提交flag顯示不對

嘗試多種後狀況後,該加密字符串爲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)
獲得的結果,發現惟一一個沒有特殊字符爲:jdr78672Q82jhQ62jaLL3
最終flag爲:
flag{jdr78672Q82jhQ62jaLL3}

題目名稱:picture3
       
       
                
       
       
題目描述:
flag提交形式爲flag{XXXX}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/7128eb78f49242d39b71e0496c3b52ab.jpg
題目writeup:
下載附件,獲得一張圖片,經過binwalk對其進行解壓。獲得149EC.zip  和stego.txt文件
binwalk -e  flag.jpg
查看壓縮包149EC. zip文件裏面包含一個stego.txt文件且CRC32值爲0CF2D018,同時對其解壓,提示須要輸入密碼,該文件名和圖片解壓出來的stego.txt是相同的。須要解壓該壓縮包文件,猜想是須要用到明文攻擊
、、
經過winrar對 stego.txt文件進行壓縮成stego.txt,查看CRC32值和149EC. zip壓縮包中值相同
這裏經過ARCHPR對壓縮包 149EC. zip進行明文攻擊,可是明文攻擊並不能恢復

經過winrar的自帶修復功能對 149EC. zip進行修復
修復後的文件保存爲rebuilt.149EC.zip,對其進行解壓,發現不須要輸入密碼,直接解壓獲得一個stego.txt文件
打開文件發現是不少行base64加密字符串
b2Q5dU==
aDk5Ni==
ZG8wOW==
ZzYxYh==
ZjU4NT==
aXBjNF==
Q3dTM2==
d1Y5c1==
dFA3WV==
ZDNQUP==
ejhBMT==
dUowaW==
OVQ2ZD==
aUM5ZU==
NnFFek==
ZGc0T/==
NGpWNE==
NVZpUW==
ejZDTm==
a1VEN5==
azNMUX==
TXlhNW==
bjZwWm==
Q2Q0b1==
猜想多是base64隱寫:
依次讀取每行,從中提取出隱寫位。
若是最後沒有‘=’,說明沒有隱寫位,跳過。
若是最後是一個‘=’,說明有兩位隱寫位,將倒數第二個字符轉化爲對應的二進制索引,而後取後兩位。
若是最後是兩個‘=’,說明有四位隱寫位,將倒數第三個字符轉化爲對應的二進制索引,而後取後四位。
將每行提取出的隱寫位依次鏈接起來,每8位爲一組轉換爲ASCII字符,最後不足8位的丟棄。
經過腳本跑出隱寫,得到flag:
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()
              
              
                       
              
              
根據falg提交格式,最終flag爲:
flag{Ba5e_64OFive}

題目名稱:7-2
題目描述:
提交格式爲wdflag{......}
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/118956c97c7c4a3e9b1508c1f5ea44be.zip
題目writeup:
下載附件,對其進行解壓,獲得不少文件,文件的名稱都是base64加密字符串
同時,打開其中任意文件,發現都是一串十進制加密字符串
經過腳本對解壓的全部文件夾的文件名進行將base64解密
# coding=utf-8
import os
import base64

for name in os.listdir("C:\\Users\\backlion\\Desktop\\flag\\problem\\"):
print name
# 因爲文件名不是4的倍數,須要在後面補‘=’
missing_padding = 4 - len(name) % 4
if missing_padding:
name += '=' * missing_padding
print str(base64.b64decode(name.encode()))
執行腳本獲得只有文件名YWluaWRleGluZ3podWFuZw base64解密出來的字符串ainidexingzhuang是正常顯示無亂碼。

打開 YWluaWRleGluZ3podWFuZw文件,發現一串數字,其中包括了{和}中的數字。那麼頗有可能這些數字解碼後就是flag
獲得{和}中的數字爲:82 42 82 52 63 21 42 22 73 21
該數字使用的是手機9鍵加密,第一個數字表明9鍵鍵盤下的數字,第二個數字表明該數字下的第幾個字母。
獲得9鍵盤加密的字符爲: uhukoahbra
經過凱撒解密獲得一個有意義的字符ylyoselfve就是ctf的內容。
根據flag提交格式,最終flag爲:
wdflag{ylyoselfve}

題目名稱:4433
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/3f8b0f935fa74f3c9cea382bf3687569.rar
題目writeup:
下載附件,對其解壓獲得一張圖片,經過stegsolve圖片隱寫工具打開,查看通道,在橙色通道中出現了一張二維碼圖片。
經過QR Reach二維碼圖片掃描工具識別出內容是一串摩爾斯字符。
獲得內容:
...--.----...--..
想要解碼可是不知道怎麼分割,因而想到題目名稱 4433,表示 4 個 4 個 3 個 3 個分隔開。
那麼摩爾斯密碼加密密文爲:
...-/-.--/--./..-/-..
經過在線工具工具對其解密獲得:VYGUD
https://www.bejson.com/enc/morse/
將VYGUD進行flag提交,發現不對
由搜索引擎搜索摩斯密碼可知摩斯密碼經常使用的縮寫中:VY表明VERY,GUD表明GOOD,那麼flag爲內容爲:VERYGOOD
可參考:https://zh.wikipedia.org/wiki/%E6%91%A9%E5%B0%94%E6%96%AF%E7%94%B5%E7%A0%81#%E5%B8%B8%E7%94%A8%E7%BC%A9%E5%86%99
最終flag爲:
flag{ VERYGOOD}

題目名稱:Run
題目描述:
Run away! nc **.**.**.** XXXX
題目場景:
111.200.241.244:64579
題目writeup:
nc連上發現是一個python沙盒逃逸,一些能引起命令執行的python庫所有被禁用了。
最後在網上發現這麼一個文章  http://www.javashuo.com/article/p-uwtotpaa-p.html

經過().class.bases[0].subclasses()獲取當前加載的類

發現func_globals被過濾了,咱們使用__getattribute__繞過

最終payload:

w = ().__class__.__bases__[ 0].__subclasses__() o = w[ 59].__enter__.__func__.__getattribute__( '__global' + 's__')[ 's'+ 'ys'].modules[ 'o'+ 's'] s = o.__getattribute__( 'sy' + 'stem') s( '/bin/sh')
執行payload獲得當前sh腳本運行權限
經過cat命令查看文件5c72a1d444cf3121a5d25f2db4147ebb,獲得falg
最終flag:
flag{eee93c33d97aa55f785a7d10ba4ae3ce}

題目名稱:流量分析
題目描述:sql注入
題目附件:
https://adworld.xctf.org.cn/media/task/attachments/4d7c14206a5c4b74a0af595992bbf439.pcapng
題目writeup:
下載附件,獲得一個 pcapng流量包文件,經過wrireshark打開該文件,根據題目描述SQL注入,那麼過濾HTTP協議,對其進行分析

看到不少注入語句,sql注入語句都是字符32開始的,第一波語句結束字符是102,剛好對應的ascii爲f

第二波語句結束字符是108,對應的ascii爲l


第三波語句結束字符是97,對應的ascii爲a

第四波語句結束字符是103,對應的ascii爲g

第六波語句結束字符是123,對應的ascii爲{

以此類推獲得flag: flag{c2bbf9cecdaf656cf524d014c5bf046c}

也能夠經過python腳本獲取

import re
import os

def getflag(contents):
req_reg = re.compile(r'0,1\),(\d+),1\)\)=(\d+)%23')
results = req_reg.findall(contents)
flag_map = {}
for result in results:
if result[0] in flag_map:
if int(result[1]) > flag_map[result[0]]:
flag_map[result[0]] = int(result[1])
else:
flag_map[result[0]] = int(result[1])
flag = ""
for i in range(1,39):
flag += chr(flag_map[str(i)])
print(flag)

if __name__ == "__main__":
basedir = os.path.dirname(__file__)
filename = "misc.pcapng"
file_path = os.path.join(basedir, filename)
print(filename)
with open(file_path, 'rb') as f:
getflag(f.read())

最終獲得falg:
flag{c2bbf9cecdaf656cf524d014c5bf046c}



題目名稱:傳感器2
題目描述:
已知ID爲0x8893CA58的溫度傳感器未解碼報文爲:3EAAAAA56A69AA55A95995A569AA95565556 爲僞造該類型傳感器的報文ID(其餘報文內容不變),
請給出ID爲0xDEADBEEF的傳感器1的報文校驗位(解碼後hex),以及ID爲0xBAADA555的傳感器2的報文校驗位(解碼後hex),並組合做爲flag提交。
例如,若傳感器1的校驗位爲0x123456,傳感器2的校驗位爲0xABCDEF,則flag爲flag{123456ABCDEF}。
題目writeup:
方法一:

先把16進制3EAAAAA56A69AA55A95995A569AA95565556都轉成2進制,獲得:
1111101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

又得知曼切斯特是從低到高跳變表示「1」,從高到低跳變表示「0」,即01->1,10->0。能夠看到二進制除了前4位,後面都是10,01,差分曼切斯特有跳變爲"0",無跳變爲"1

那麼實際上轉換成的二進制爲(去掉前面最前面1111):
101010101010101010101001010110101001101001101010100101010110101001010110011001010110100101011010011010101010010101010101100101010101010110

所以將編碼進行曼切斯特解碼:

00000000001001001101100010001001001111001010010110000100000110000001

轉成16進制獲得:
24d8893ca584181

又得知第一個ID爲0x8893CA58的溫度傳感器就在第一個曼切斯特解碼24d8893ca584181中,是第4位到11位爲:8893ca58,ID轉換成大寫爲:8893CA58

根據上面原理,可將3EAAAAA56A69AA556A965A5999596AA95656,轉換成曼切斯特解碼爲24d8845abf34119,取第4位到11位,ID轉換成大寫爲:8845ABF3

或者

id1 = 0x8893CA58
msg1 = 0x3EAAAAA56A69AA55A95995A569AA95565556
msg2 = 0x3EAAAAA56A69AA556A965A5999596AA95656

def calc(msg):
id=''
s = bin(msg)[6:]
for i in range(2, len(s), 2):
if s[i-2:i] == s[i:i+2]:
id += '0'
else:
id += '1'
return hex(int(id, 2)).upper()

print(calc(msg1))
print(calc(msg2))

根據計算機網絡報文首部的一些學習,這裏我進行了類比,可能校驗位應該是最後幾位,依次嘗試過都無果,但想到,除了最後2位不一樣,中間ID不一樣,其餘均相同,可見校驗位就是最後2位,那麼校驗位的計算應該是用CRC進行計算,而前面的位數是7位,嘗試計算,可是得出的值並非預計的。
後來想到可能缺位了,故又往前算了一位:
獲得:024D 8893CA58 41 81024D 8845ABF3 41 19
024D 8893CA58 41024D 8845ABF3 41進行CRC8運算


能夠獲得81和19,與猜測一致

下面就能夠用這個方法解出flag
帶入ID:DEADBEEFBAADA555
獲得:024D DEADBEEF 41

https://www.23bei.com/tool-233.html


024D BAADA555 41





計算CRC8,分別獲得:B5和15

方法二:

也能夠經過腳本獲取:

#!/usr/bin/python

def crc(x,y):
while(x>y):
l = len(bin(x)) - len(bin(y))
t = int(bin(y)[2:]+'0'*l,2)
x ^= t
return x
m = 0
for i in range(0x200):
if i < 100:
continue
if crc(0x24d8893ca584100,i) == 0x81 and crc(0x24d8845abf34100,i) == 0x19:
m = i
print i
break
print hex(crc(0x00024ddeadbeef4100,m))
print hex(crc(0x00024dbaada5554100,m))


最終獲得flag:

flag{B515}

相關文章
相關標籤/搜索