1
2
CTFlearn - Medium challenge
Tiến độ: 17/19

07601

https://mega.nz/#!CXYXBQAK!6eLJSXvAfGnemqWpNbLQtOHBvtkCzA7-zycVjhHPYQQ I think I lost my flag in there. Hopefully, it won’t get attacked…


Author: @alexkato29

Giải nén n+1 file sau đó sử dụng lệnh để dò find -type f -exec strings {} + | grep -i "CTF"

Flag: ABCTF{Du$t1nS_D0jo}


Milk’s Best Friend

There’s nothing I love more than oreos, lions, and winning. https://mega.nz/#!DC5F2KgR!P8UotyST_6n2iW5BS1yYnum8KnU0-2Amw2nq3UoMq0Y Have Fun :)


Author: @bobbyjives

Đầu tiên mình dùng string nhưng thông báo flag không có ở đây nên mình thử tìm có file bị nhúng không

Khi vào thì mình thấy có file rar và jpg nên thử tìm trong jpg

Sử dụng strings

Flag: flag{eat_more_oreos}


A CAPture of a Flag

This isn’t what I had in mind, when I asked someone to capture a flag… can you help? You should check out WireShark. https://mega.nz/#!3WhAWKwR!1T9cw2srN2CeOQWeuCm0ZVXgwk-E2v-TrPsZ4HUQ_f4


Author: @hazzy

Đầu tiên mình dùng strings thì sẽ thấy một sớ khá là dài nhưng cốt lõi là mình tìm được 4 đoạn base64 nhưng chỉ có 1 đoạn là flag

Flag: flag{AFlagInPCAP}


Up For A Little Challenge?

https://mega.nz/#!LoABFK5K!0sEKbsU3sBUG8zWxpBfD1bQx_JY_MuYEWQvLrFIqWZ0 You Know What To Do …


Author: @skycoder

Đầu tiên mình đọc file và thấy được flag nhưng đây là flag giả, Tuy nhiên mình chú ý thấy có 2 dòng chứa mật khẩu nên lưu lại xem sao

Bên cạnh đó trong file còn có 1 link khác dẫn tới 1 file zip

Khi giải nén mình chú ý thấy có 1 file jpg trong đường dẫn nên sẽ tìm nó

Đây là 1 file ẩn nên cẩn thận không là bỏ sót

Nhưng khi mở lên thì chả thấy gì y như tên file vì thế mình mở thư mục phía dưới

Sau khi mở mình thấy được file zip nên mình sử dụng foremost để kiểm tra có file nhúng không

Mở lên thì mình thấy file jpg nhưng cần mật khẩu để mở

Quay lại các bước đầu mình đã tìm thấy 2 mật khẩu nên mình thử cả 2 thì lại không được

Nhưng nhìn kỹ mình thấy 2 từ cuối bị dính nên thử xóa đi thì vào được

Tới bước này vẫn lừa, flag nằm ở góc dưới

Flag: flag{hack_complete}


Digital Camouflage

We need to gain access to some routers. Let’s try and see if we can find the password in the captured network data: https://mega.nz/#!XDBDRAQD!4jRcJvAhMkaVaZCOT3z3zkyHre2KHfmkbCN5lYpiEoY Hint 1: It looks like someone logged in with their password earlier. Where would log in data be located in a network capture?
Hint 2: If you think you found the flag, but it doesn’t work, consider that the data may be encrypted.

Credit: picoCTF 2017


Author: @skywalkrs

Sử dụng wireshark

Filter theo giao thức http

Follow gói tin

Kiểm tra thì không thấy gì nên mình tiếp tục tăng stream để tìm

Tới stream 3 thì mình thấy được user và password nhnhưng đang ở dạng bị encode

Decode base64

Flag: PApdsjRTae


The adventures of Boris Ivanov. Part 1.

The KGB agent Boris Ivanov got information about an attempt to sell classified data. He quickly reacted and intercepted the correspondence. Help Boris understand what exactly they were trying to sell. Here is the interception data: https://mega.nz/#!HfAHmKQb!zg6EPqfwes1bBDCjx7-ZFR_0O0-GtGg2Mrn56l5LCkE


Author: @nomad

Sau khi sử dụng lệnh file thì mình biết ảnh này bị chỉnh sửa bởi GIMP

Mở ảnh thì mình chú ý phần nhiều điểm ảnh này

Tinh chỉnh đến khi thấy flag

Flag: flag{d0nt_m3s5_w1th_th3_KGB}


Exclusive Santa

Dear Santa, Hey! There are so many toys that I want, but I just don’t have the money. I don’t care which toy I get as long as it’s one or the other, but not both!


Author: @EdbR

Đầu tiên mình tìm xem có file bị nhúng không do đây là 1 file .rar

Mình thấy có 2 file ảnh và 1 file rar nên mình sẽ xem file ảnh trước

Và mình phát hiện trong file ==3.png== chòn có 1 data chèn sau footer

Mình thấy file này và file ==1.png== giống nhau nên ghép lại thử, đầu tiên mình mở file 1.png java -jar stegslove.jar

Sau đó là file trên thì được flag nhưng bị ngược

Lật ảnh lại convert -flop sloved.bmp newImage

Flag: CTFlearn{Santa_1s_C0ming}


Naughty Cat

I think my cat is hiding something…


Author: @Negatyw01

Đầu tiên ta có ảnh 1 con mèo sau khi dùng exiftool thì mình phát hiện có file bị nhúng sau footer

Sau khi dùng binwalk thì mình phát hiện có file mp3

Mình dùng exiftool lên file mp3 thì phát hiện có chứa mật khẩu

Mở file âm thanh và thêm layer spectrogram

Mật khẩu được giấu bên trong

Tiếp đến mình giải nén file .rar nhưng không được

Mình dùng hexdump đểm xem thử thì thấy 4 bit đầu không phải định dạnh của file .rar

Mình dùng hexedit để chỉnh lại

Và giải nén file

Đọc file thì thấy chuỗi base64

Decode base64

Flag: f0r3n51cs_ma5t3r


Smiling ASCII

Find the flag on the smiling face.


Author: @lvmalware

Mình dùng exiftool thì phát hiện có file nhúng sau footer

Lấy ra được 2 file

Sau khi dùng strings thì mình thấy được chuỗi base64

Decode basse64

Đoạn này nói gì đó liên quan tới ascii nên mình dùng thử zsteg

Ra luôn flag

Flag: CTFlearn{ascii_pixel_flag}


MountainMan

Don’t be fooled by two 0xffd9 markers. xor is your friend.


Author: @kcbowhunter

Do có gợi ý nên mình đọc hex

Có 2 footer như là miêu tả đã nói mình lấy đoạn giữa 2 footer và đem đi giải mã với xor

Ra flag

Flag: CTFlearn{Ubuntu_r0ck5}


HailCaesar!

: You might need to write some Python to solve this challenge. Some encryption may be involved. Good Luck!


Author: @kcbowhunter

Mình dùng exiftool thì thấy có 3 fake flag nhưng chứa gợi ý cho cách giải

Sau đó mình dùng strings thì thấy rất nhiều thông tin

Decode đoạn base64(bỏ “i” ở đầu) thì được vài lời của tác giả không ảnh hưởng tới bài

Doạn tiếp theo dựa vào gợi ý từ flag giả thì đây có thể là mã Caecar

Tiếp đến là dò flag

Nhưng bị lỗi vài chỗ nên mình thử tìm vài phần của flag

Đối chiếu 2 đoạn và bù vào chỗ lỗi ta có được flag

Flag: CTFlearn{Maximus.Decimus.Meridius}


Dumpster

I found a flag, but it was encrypted! Our systems have detected that someone has successfully decrypted this flag, and we stealthily took a heap dump of the program (in Java). Can you recover the flag for me? Here’s the source code of the Java program and the heap dump: https://mega.nz/#!rHYGlAQT!48DlH2pSZg10Ei3f-Ivm7RoNBbV16Qw0wN4cWxANUwY


Author: @thekidofarcrania

Mình có file zip nên giải nén được thì các file khác

Mình mở file java ra thì thấy flag bị mã hóa

Vậy nên mình phải tìm pass để giải mã Mình chú ý thấy có file .hprof và sau khi tìm hiểu thì biết được đây là file chứa dữ liệu được lưu nên có thể pass nằm trong đây visualvm

Vậy là mình tìm được 16 byte passHash

Tới đây mình dùng script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from base64 import b64decode
from Crypto.Cipher import AES

# passHash từ heap dump (đã chuyển byte âm sang unsigned)
passHash = bytes([7, 95, 222, 16, 167, 170, 73, 108, 128, 71, 43, 41, 100, 40, 53, 232])

# FLAG trong code Java
FLAG = "S+kUZtaHEYpFpv2ixuTnqBdORNzsdVJrAxWznyOlJfo="

# Giải mã AES
cipher = AES.new(passHash, AES.MODE_ECB)
pt = cipher.decrypt(b64decode(FLAG))

# Bỏ padding PKCS5/PKCS7
pad_len = pt[-1]
if 1 <= pad_len <= AES.block_size and all(p == pad_len for p in pt[-pad_len:]):
pt = pt[:-pad_len]

print(pt.decode("utf-8"))

Sau đó thì chạy script sẽ được flag

Flag: CTF{h34p_6ump5_r_c00l!11!!}


The Keymaker

Jpeg comments can be very interesting.


Author: @kcbowhunter

Đầu tiên đọc file thì mình thấy fake flag, thứ cần chú ý là đoạn comment sau đó

Dùng strings để xem toàn bộ comment

Decode và mình được hint

Từ hint mình có được:

  1. Lệnh để thực thi
  2. S0F0 và SOS

Vậy mình tìm 2 đoạn trên để cho vào lệnh Mình dùng xxd (hoặc hexpdump đều được nhưng khó nhìn hơn) S0F0 trong hex là: ffc0 (Bỏ 2 byte đầu vì là byte độ dài)

SOS trong hex là: ffda (Lấy tới giá trị dưới nó 1 dòng)

Chạy lệnh để tìm flag openssl enc -d -aes-256-cbc -iv SOF0 -K SOS -in flag.enc -out flag -base64

Và mình có được file flag

Flag: CTFlearn{Ne0.TheMatrix}


ShahOfGimli

That still only counts as one!


Author: @kcbowhunter

Mình dùng strings để xem comment thì thấy 1 đống chữ nhưng dịch ra chủ yếu là lời tác giả và gợi ý

Dịch ==CTFlearn== sang sha256sum để có key echo -n | sha256sum

Gợi ý bảo đoạn mã thứ 3

Sau đó mình bắt đầu dịch base64 -d cipher.txt > cipher.bin

1
openssl enc -d -aes-256-cbc -K <key_hex_SHA256> -iv 00000000000000000000000000000000 -in cipher.bin -out plaintext.txt

Sau đó mở file plaintext.txt thì mình thấy 3 flag nhưng chỉ là hint

Từ hint mình có được

  1. Key là sha256sum của file Gimli
  2. Hash

Mà mình không thấy file Gimli nên có khả năng nó bị nhúng trong ảnh

Giải nén tiếp

Và mình có 2 file quan trọng:

  1. File flag.enc chứa flag chưa được dịch sang sha256sum
  2. File Gimli là key để dịch sang sha256sum

Dịch file Gimli sang sha256 để tìm key

Chạy lệnh openssl enc -d -aes-256-cbc -iv 00000000000000000000000000000000 -K SOS -in flag.enc -out flag -nopad

Đọc file

Flag: CTFlearn{Gimli.Is.A.Warrior}


Mr.Bin

Mr.Bin is here to help you,can you find the flag?


Author: @someone92

Mình đọc file thì thấy có đoạn base64

Decode

Và mình được gợi ý Tiếp đến mình lấy file nhúng thì có được 1 file bin và 1 file zip

Để mở file Zip mình cần tìm mật khẩu

Sau khi mở thì mình được file

Mở lên thì thấy 1 hàng rất dài số 0, lúc này mình nhớ đến hint trước đó nên sẽ chuyển thành 600 dòng x 600 ký tự

Lệnh fold -w 600 | head -n 600 > output.txt

Mở file output.txt ta được flag

Hơi khó nhìn tí

Flag: CTFlearn{y0u_n4il3d_it}


SpaceStation

The SpaceStation.jpg contains the encrypted flag in the file flag.enc. The flag is encrypted using openssl and the AES algorithm. The iv and key used for the openssl encryption command are opcodes in an executable named Bangalore that is also hidden in SpaceStation.jpg. You will need to know just a little bit about crypto, executable file formats and assembler to solve this challenge… objdump is your friend :-) Needed info is provided in the embedded readme file.


Author: @kcbowhunter

Mình dùng lệnh strings thì thấy có 3 file ẩn trong ảnh

Vậy nên mình lấy file bị nhúng trong ảnh binwalk -e

Tại đây đập vào mắt mình là file ==readme== nên mình thử mở ra xem sao

Trong đây là hint về lệnh cũng như cách lấy ==key== và ==iv== và bài gợi ý là mình dùng ==objdump== Đầu tiên là ==key== được gợi ý 32 bytes nằm trong label ==_flagLoop== objdump -d -j .text -M intel ./Bangalore

Tiếp đến là ==iv== được gợi ý 16 bytes nằm trong label ==_Welcome== Mà bài này rất lừa vì không có label _Welcome mà chỉ có welcome objdump -d -j .text -M intel ./Bangalore

Tiếp đến mình dùng lệnh có sẵn trong file openssl enc -d -aes-256-cbc -in flag.enc -out flag -iv hexbytes -K hexbytes

Và mở file

Flag: CTFlearn{SpaceX_Is_The_Next_Generation}


TheVault

Roses are Red Violets are Blue What is in this Vault Is not meant for you


Author: @kcbowhunter

Dùng strings thì thấy có fake flag kèm gợi ý của tác giả

Mình dùng binwalk kiểm tra thì thấy có file zip bên trong

Nhưng không có mật khẩu để mở + tên file nên mình nghĩ đây không phải là flag mà chỉ là đánh lừa thôi vì bài này khá ít nhười giải nên không thể dễ vậy được

Mình thử làm theo tác giả gợi ý về 2 file py, chạy file py1 để tìm EOI gốc

Tính tham số Start = EOI + 2 = 15125. length = (filesize - start) + 1 = (266845 - 15125) + 1 = 251721

Chạy file py2 với tham số đã tính

Tìm flag bị mã hóa bởi ROT như tác giả gợi ý (Hint 1: Tor đọc ngược là ROT)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import re, sys

def rot95_dec(b, n):
out = bytearray()
for x in b:
if 32 <= x <= 126:
out.append(32 + ((x - 32 - n) % 95))
else:
out.append(x)
return bytes(out)

tail = open("tail.bin","rb").read()
# (tùy chọn) lọc printable để nhanh hơn:
tail = bytes([b for b in tail if 32 <= b <= 126])

for n in range(1,95):
if n == 47:
continue
dec = rot95_dec(tail, n)
m = re.search(rb"(CTFlearn\{[^}]{1,300}\})", dec)
if m:
print(f"shift = {n} -> {m.group(1).decode(errors='ignore')}")
break

Flag: CTFlearn{Show_Me_The_M0ney}