題目: Forensics Warmup 1
第一題要你下載一個檔案
解壓縮之後裡面是一張圖片
然後圖片就寫著flag
讓你不禁懷疑這難道是送分題嗎?
果真就只是送分題而已
輸入picoCTF{welcome_to_forensics}
過關
題目: Forensics Warmup 2
第二題要你下載一張圖片
他說他打不開 你有甚麼方法打開嗎
還有給你一些hint
不過這題完全不開玩笑
我也搞不懂到底是要幹嘛XDDDD
因為我直接點開圖片就打開來了
也許是win10 OS有默默幫我做了甚麼吧…
照著圖片內容輸入
picoCTF{extensions_are_a_lie}
過關
題目: Reading Between the Eyes
下載一張哈士奇~
題目說圖片裡面有藏東西
本來想用前陣子學到的小工具StegoSuite
結果那個不支援PNG檔案
找到這個資源
https://github.com/DominicBreuker/stego-toolkit
要解壓縮才行
https://stackabuse.com/python-zlib-library-tutorial/
用binwalk也行
#用binwalk查看圖片裡面有沒有藏檔案
binwalk husky.png
#把檔案分離出來
binwalk -e husky.png
Code language: CSS (css)
查到python 似乎有個zlib module
應該可以安裝起來然後用python decompress
結果試了一陣子發現…
乾? 怎麼這麼困難
好像沒辦法QQ
又估狗了一下 發現一個工具zsteg
https://github.com/zed-0xff/zsteg
下載安裝起來用一下
答案就出來了!!! 幹 震怒
這工具也太方便
題目: Desrouleaux
連線過去之後被問問題了
You'll need to consult the file `incidents.json` to answer the following questions.
What is the most common source IP address? If there is more than one IP address that is the most common, you may give any of the most common ones.
cat incidents.json | grep src_ip
回答13.198.222.191看看
(如果沒反應 就再nc連一次)
答對了
後來又繼續問
就是滿簡單的問題
其實要看懂英文比較難XD
最後一題還真的是看不懂
What is the number of unique destination ips a file is sent, on average? Needs to be correct to 2 decimal places.
用以下的方法
#整理如下
#把每個file_hash分成一個Group
#清點每個group裡面的unique dst_ip
#清點完剛好都沒重複 所以unique ip是10 group是5
#所以最後用10/5 = 2.00
"dst_ip": "199.16.77.59"
"file_hash": "69a2b4d89c73ac3a",
"dst_ip": "70.53.86.44"
"file_hash": "172a9e2037d32204",
"dst_ip": "3.100.196.23"
"file_hash": "485354ceaaac3905",
"dst_ip": "164.80.130.176"
"file_hash": "485354ceaaac3905",
"dst_ip": "167.26.111.81"
"file_hash": "485354ceaaac3905",
"dst_ip": "3.100.196.23"
"file_hash": "8273bda152e4dc60",
"dst_ip": "111.208.212.29"
"file_hash": "8273bda152e4dc60",
"dst_ip": "174.71.253.65"
"file_hash": "56120f9b5b465272",
"dst_ip": "111.208.212.29"
"file_hash": "56120f9b5b465272",
"dst_ip": "70.53.86.44"
"file_hash": "56120f9b5b465272",
Code language: PHP (php)
輸入2得到flag
flag: picoCTF{J4y_s0n_d3rUUUULo_b6cacd6c}
題目: Recovering From the Snap
下載下來的檔案副檔名是dd
用binwalk看
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
39424 0x9A00 JPEG image data, JFIF standard 1.01
39454 0x9A1E TIFF image data, big-endian, offset of first image directory: 8
672256 0xA4200 JPEG image data, JFIF standard 1.01
1165824 0x11CA00 JPEG image data, JFIF standard 1.01
1556992 0x17C200 JPEG image data, JFIF standard 1.01
1812992 0x1BAA00 JPEG image data, JFIF standard 1.01
1813022 0x1BAA1E TIFF image data, big-endian, offset of first image directory: 8
2136576 0x209A00 JPEG image data, JFIF standard 1.01
2136606 0x209A1E TIFF image data, big-endian, offset of first image directory: 8
2607616 0x27CA00 JPEG image data, JFIF standard 1.01
2607646 0x27CA1E TIFF image data, big-endian, offset of first image directory: 8
3000832 0x2DCA00 JPEG image data, JFIF standard 1.01
3000862 0x2DCA1E TIFF image data, big-endian, offset of first image directory: 8
Code language: CSS (css)
用file指令查看一下這個檔案
https://linux.die.net/man/1/file
顯示結果如下
#root@hackercat:~/CTF/picoCTF2018/Forensics/RecoveringFromtheSnap# file animals.dd
animals.dd: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 20480 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 20, sectors/track 32, heads 64, serial number 0x9b664dde, unlabeled, FAT (16 bit)
Code language: PHP (php)
根據提示去找
有個資料救援工具叫testdisk
看了一下嘗試看看能不能對那個animals.dd使用
https://nwpie.blogspot.com/2012/11/5-testdisk.html
結果試了一下沒反應
絕望again
結果查了一下別人的write up
我的思路沒錯
只是少了一個掛載的動作 不能直接用testdisk
另外多學到了一個指令
fdisk -lu animals.dd
Disk animals.dd: 10 MiB, 10485760 bytes, 20480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
又看了另一個人的write up
有個比較easy的方法
安裝GUI版本的掛載工具 Disk Image Mounter
#當然 要gnome才行
sudo apt-get install gnome-disk-utility
Code language: PHP (php)
接著cp animals.dd animals.iso
因為這個工具Disk Image Mounter
他會認副檔名 要iso你點右鍵才可以掛載
會看到有幾張圖片 但是沒有flag
後來玩一陣子發現好像又根本不用掛載?
testdisk animals.dd
進去直接Enter直到看到未刪除的檔案
把theflag復原就好
picoCTF{th3_5n4p_happ3n3d}
題目: admin panel
題目問能找到密碼嗎
下載檔案data.pcap
然後用wireshark打開來看看
root@hackercat:~/CTF/picoCTF2018/Forensics/adminpanel# wireshark data.pcap
Code language: PHP (php)
用find 直接找Packet details的string關鍵字設password
很快一下就找到了
密碼是p4ssw0rd
試了picoCTF{p4ssw0rd}
結果不對
想想題目有提到login panel
所以關注在login的那個封包上面
結果發現了!
flag就藏在這邊而已
picoCTF{n0ts3cur3_9feedfbc}
題目: hex editor
到shell的路徑/problems/hex-editor_1_10cafee5618ce2cfe32f2188ca1f472e
底下有個檔案hex_editor
也可以下載到本機玩
在win上面習慣用的hex editor是winhex或是010 editor之類
那提示這邊也有推薦你Liunx上面的xxd, hexedit, bvi
順便就把這三個一次下載安裝完成(用apt就可以)
用xxd看看
xxd hex_editor.jpg
發現內容太多
用grep找關鍵字看看
xxd hex_editor.jpg | grep ‘pico’
得到
root@hackercat:~/CTF/picoCTF2018/Forensics/hexeditor# xxd hex_editor.jpg | grep 'pico'
00012940: 3a20 2270 6963 6f43 5446 7b61 6e64 5f74 : "picoCTF{and_t
Code language: PHP (php)
答案看起來呼之欲出啦XD
繼續用grep 把後三行也叫出來
root@hackercat:~/CTF/picoCTF2018/Forensics/hexeditor# xxd hex_editor.jpg | grep -A 3 'pico'
00012940: 3a20 2270 6963 6f43 5446 7b61 6e64 5f74 : "picoCTF{and_t
00012950: 6861 7473 5f68 6f77 5f75 5f65 6469 745f hats_how_u_edit_
00012960: 6865 785f 6b69 7474 6f73 5f34 6245 3561 hex_kittos_4bE5a
00012970: 4362 387d 220a Cb8}".
Code language: PHP (php)
就這樣解出來了
picoCTF{and_thats_how_u_edit_hex_kittos_4bE5aCb8}
不過發現其實用cat直接看這個圖片..
就會顯示答案了
題目: Truly an Artist
題目提供了一個照片 2018.png
隨便找一個網站 可以完整顯示netadata info的
把圖片上傳
就找到flag了
https://www.metadata2go.com/
picoCTF{look_in_image_13509d38}
也可以用exiftool
題目: now you don’t
下載檔案下來
看起來是張全紅的圖
用binwalk看沒甚麼特別
安裝看看Stegsolve跟StegDetect
StegDetect似乎是window的?不確定
Stegsolve在下面網址有
https://github.com/zardus/ctf-tools/blob/master/stegsolve/install
基本上後面mkdir bin,然後mv到bin動作沒甚麼差
反正就是個jar檔 有jave開發環境就可以執行
執行後打開圖片
結果我也只是按按左左右右
就突然冒出答案了XD
picoCTF{n0w_y0u_533_m3}
:::success
Stegsolve
圖片通道檢視器,常用參數:
Analyse下拉式功能表:
File Format:查看檔案格式和參數資訊,有時候flag會寫在圖片資訊裡
Data Extract:資料提取,如LSB隱寫等在這個選項中提取資訊
Sterram solver:立體視圖,可以左右移動控制偏移量
Frame Broswer:逐幀流覽,如查看快速閃過的GIF圖中的flag
Image Combiner:圖片結合,可以對兩張圖片做xor、add、sub等運算
StegDetect
數位圖像隱寫分析工具,主要針對JPEG,常用參數:
-q 僅顯示可能包含隱藏內容的圖像。
-n 啟用檢查JPEG檔頭功能,以降低誤報率。如果啟用,所有帶有批註區域的檔將被視為沒有被嵌入資訊。如果JPEG檔的JFIF識別字中的版本號不是1.1,則禁用OutGuess檢測。
-s 修改檢測演算法的敏感度,該值的預設值為1。檢測結果的匹配度與檢測演算法的敏感度成正比,演算法敏感度的值越大,檢測出的可疑檔包含敏感資訊的可能性越大。
-d 列印帶行號的調試資訊。
-t 設置要檢測哪些隱寫工具(默認檢測jopi),可設置的選項如下:
j 檢測圖像中的資訊是否是用jsteg嵌入的。
o 檢測圖像中的資訊是否是用outguess嵌入的。
p 檢測圖像中的資訊是否是用jphide嵌入的。
i 檢測圖像中的資訊是否是用invisible secrets嵌入的。
:::
題目: Ext Super Magic
基本上大概就是連題目都看不懂
副檔名是img
https://zh.wikipedia.org/wiki/IMG%E6%A0%BC%E5%BC%8F
嘗試看看改成iso掛載
結果失敗了
root@hackercat:~/Downloads# cp ext-super-magic.img ext-super-magic.iso
root@hackercat:~/Downloads# sudo mkdir /media/iso
root@hackercat:~/Downloads# sudo mount -o loop ext-super-magic.iso /media/iso
mount: /media/iso: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
Code language: PHP (php)
根據提示,研究一下幾個東西
file指令, fsck, Endianness
file去查看ext-super-magic.img
顯示ext-super-magic.img: data
fsck是Linux檢查與修復硬碟檔案系統的工具
https://blog.gtwang.org/linux/linux-fsck-examples/
根據這幾個提示
感覺起來
應該是位元組被移動過導致magic number亂了
不過如果是這樣也太難了吧XD
找看看IMG檔案的magic number
結果怎麼好幾個 = =
https://www.garykessler.net/library/file_sigs.html
還有一個hint的網頁 根本抓不到線索
http://www.nongnu.org/ext2-doc/ext2.html
fsck沒辦法執行對檔案進行修復
利用fsck.ext2
可以確認他回應 bad magic number
可以上網查看看ext2 file的magic number
ext2/ext3/ext4都是 0x53 0xEF 在位置1080-1081
嘗試利用hex editor去修改
直接把內容改成53跟EF
hexedit 按F2存檔 Ctrl加上X 是存檔加退出
稍微注意一下這邊修改位置是0x439跟0x439
其實就是1080跟1081的hex而已
利用file再查看一次 結果似乎正常了
mount起來
裡面一堆圖片
查看裡面的flag圖片
本來想說用strings應該就可以看到
結果還是看不到
用eog開啟flag圖片
成功得到flag
picoCTF{Cd7AB187DF0bA6eE3C3C7ea7E3B9DbEe}
:::info
Hint
https://en.wikipedia.org/wiki/Fsck
https://www.garykessler.net/library/file_sigs.html
https://linux.die.net/man/1/file
http://www.nongnu.org/ext2-doc/ext2.html
https://en.wikipedia.org/wiki/Endianness
:::
題目: Lying Out
兩個檔案
一張圖跟一段文字說明
You've been given a dataset of 4800 internet traffic logs for your
organization's website. This dataset covers the number of unique IP addresses
sending requests to the site in 15-minute "buckets", across a 24-hour day.
The attached plot will help you see the daily pattern of traffic. You should
see 3 spikes of traffic: one in the morning, one at midday, and one in the
evening.
Your organization needs your help to figure out whether some recent activity
indicates unusual behavior. It looks like some logs have higher-than-usual
traffic in their time bucket: many more unique IP addresses are trying to
access the site than usual. This might be evidence that someone is trying to
do something shady on your site.
Code language: PHP (php)
連線過去之後要回答問題
nc 2018shell.picoctf.com 2245
You'll need to consult the file `traffic.png`
to answer the following questions.
Which of these logs have significantly higher traffic than is usual for their time of day? You can see usual traffic on the attached plot.
There may be multiple logs with higher than usual traffic,
so answer all of them! Give your answer
as a list of `log_ID` values separated by spaces.
For example, if you want to answer that
logs 2 and 7 are the ones with higher than usual traffic, type 2 7.
log_ID time num_IPs
0 0 01:30:00 11603
1 1 03:30:00 10288
2 2 05:00:00 11584
3 3 08:15:00 11523
4 4 13:30:00 11731
5 5 14:30:00 10387
6 6 15:00:00 9744
7 7 15:15:00 9993
8 8 15:15:00 10083
9 9 16:45:00 11907
10 10 18:15:00 14957
11 11 18:15:00 13854
12 12 18:30:00 12918
13 13 20:15:00 10726
其實很單純問題就是給了你一個表,表上附每個時間點的IP數量
然後你要去查看下載的那張圖 看看表中那些時段是超過正常IP數量的
下載下來的那張圖就是顯示正常IP數量的圖 是以15分鐘紀錄一次的
回答正確 達到flag
picoCTF{w4y_0ut_04c41b59}
不過比較麻煩是連線過去沒在一定時間內回答完
就會斷開
然後每次連線過去問題給的表會不一樣
所以其實比較好的方法應該是要寫一個腳本快速去幫你計算答案
題目: What’s My Name
下載下來是一個封包檔 myname.pcap
根據提示應該跟dns有關係
過濾搜尋一下dns
結果隨便就看到答案了 XD
picoCTF{w4lt3r_wh1t3_033ad0f914a0b9d213bcc3ce5566038b}
題目: core
hint
- core file
https://zh.wikipedia.org/wiki/%E6%A0%B8%E5%BF%83%E8%BD%AC%E5%82%A8
https://medium.com/cubemail88/c-c-gdb-core-dump-debugging-737b83829743 - GDB cheat sheet
http://darkdust.net/files/GDB%20Cheat%20Sheet.pdf
Try to figure out where the flag was read into memory using the disassembly and strace.
You should study the format options on the cheat sheet and use the examine (x) or print (p) commands. disas may also be useful.
所以這一題要用到GDB 有提到會用到 disassembly 跟 strace
這題需要下載兩個檔案 print_flag 與 core
用gdb
先用bt 堆疊追蹤找到入口點
跟進print_flag function
觀察
0x080487c7 <+6>: mov DWORD PTR [ebp-0xc],0x539
0x080487ce <+13>: mov eax,DWORD PTR [ebp-0xc]
0x080487d1 <+16>: mov eax,DWORD PTR [eax*4+0x804a080]
Code language: HTML, XML (xml)
0x080487dc <+27>: push 0x804894c
0x080487e1 <+32>: call 0x8048410 <printf@plt>
Code language: HTML, XML (xml)
flag的內容在eax當中
得到的這一串就是flag
picoCTF{abb6a3b2603654804ed357322c760510}
write-up
https://github.com/Dvd848/CTFs/blob/master/2018_picoCTF/core.md
https://0xswitch.fr/CTF/picoctf-2018-core
題目: Malware Shops
下載兩個檔案
一個是圖 一個是info說明
跟前面流量那題看起來很相似
不…不對XD
哪尼咖?!
這題題目好像有問題
首先連線過去的第一個問題
ou'll need to consult the file `clusters.png` to answer the following questions.
How many attackers created the malware in this dataset?
根本沒有給clusters.png這個答案 總之回答5通過了
接著第二題
In the following sample of files from the larger dataset, which file was made by the same attacker who made the file edff06ab? Indicate your answer by entering that file's hash.
hash jmp_count add_count
0 edff06ab 35.0 24.0
1 87065e4d 22.0 68.0
2 687e386a 37.0 11.0
3 f5b7fded 8.0 43.0
4 8aa00e96 39.0 8.0
5 de66209c 14.0 36.0
6 ebaf5ccd 9.0 16.0
7 6b4deb5b 20.0 68.0
8 75ab42ce 38.0 28.0
9 628e79cf 7.0 29.0
也根本不會用到下載的那張圖
不過下載的那個info倒是有用到
info中最後一段提到
Malware attackers often release many slightly different versions of the same
malware over time. These different versions always have totally different
hashes, but they are likely to have similar numbers of `jmp` and `add`
instructions.
Code language: JavaScript (javascript)
所以題目問說哪個hash的檔案 可能是來自於同一個攻擊者
就找了一個跟題目說的檔案的jmp,add count比較接近的回答
就答對了
得到flag
flag: picoCTF{w4y_0ut_28483c2e}