Challenge cho một file đuôi .csr chúng ta cần đọc file đó để tìm được flag.Dưới đây là đoạn code đọc file .csr bằng python
Flag: picoCTF{read_mycert_4448b598}
encrypt.txt
Khi quan sát thấy chuỗi encrypt có định dạng giống flag nhưng chỉ khác kí tự.Mình đoán đấy là một loại mật mã thay thế.Cụ thể là ROT13 dịch chuyển 18 kí tự
decode bằng cyber chef
Flag: picoCTF{r0tat1on_d3crypt3d_4a3dcb4c}
Challenge cho file ảnh atbash.jpg
Vì hint là extract file ảnh nên mình thử extract bằng exiftool,binwalk nhưng không được.Đến khi thử dùng stegseek thì thành công.
Extract bằng stegseek sau đó decode bằng atbash-cipher
Đoạn mã thu được là một loại mã hóa tên là atbash trùng với tên file ảnh.
Flag: picoCTF{atbash_crack_ca00558b}
Challnge cho đoạn code
Quan sát đoạn code có vẻ giống loại mật mã RSA.Chúng ta hay cùng tổng hợp lại một chút.
Phân tích bài toán ta thấy challenge cho e,c,d mà không biết n.Vì vậy ta cần tìm n từ e và d.Có một bài viết nói về điều này .
Khi nc tới máy chủ ta có được c ,d cùng với e mặc định bằng 65537
Ta đi phân tích e*d-1 thành các số nguyên tố. Có nhiều trang web để factor . Ở đây mình sử dụng website này
Từ tập hợp các số factor này ta có thể xây dựng một tập hợp các số nguyên tố 128 bits.Vì p,q có kích thước 128 bit. Từ đó ta sẽ chọn từng cặp 2 số trong tập hợp mảng các số nguyên tố 128 bits gán cho p ,q và dựng lại bài toán RSA nếu tính ra được số mũ giải mã d bằng với số mũ d của challenge cho thì p,q chúng ta tìm được là chính xác.Sau đó dễ dàng tìm được chuỗi plaintext để get flag.
Các bước cụ thể :
Từ tập hợp các số factor của ed-1 ta tạo các tập hợp con với n phân tử .Trong python có hàm combinations
giúp chúng ta làm điều này .Ví dụ array = [1,2,3] tạo mảng các mảng con 2 phần tử , combinations(array,2) sẽ trả về [(1,2),(1,3),(2,3)]
Trong bài, ta sẽ sử dụng đối với mảng các số factor và n là độ dài mảng giảm dần để thử từng trường hợp.Từ từng tập hợp con này ta sẽ tính tích của tất cả các phần tử sau đó check số bit của kết quả. Nếu kết quả này nằm trong khoảng 124 -> 129 bits thì tiến hành tăng từng bit .Khi số đó nằm trong khoảng 127-129 bits,tức là số này là một số 128 bits (lấy trong khoảng này vì khi lấy log2 một số 128 bit có thể lệch trên hoặc lệch dưới nửa bit ,các số ngoài khoảng này không phải là số 128 bit).Nếu số 128 bit này là số nguyên tố thì thêm vào mảng các số nguyên tố 128 bit của chúng ta.
Sau nhiều lần thử các tập hợp con như vậy ,kết quả thu được là một mảng gồm các số nguyên tố 128 bit. Ta sẽ chọn theo từng cặp với nhau gán cho p,q và xây dựng lại bài toán RSA ,tính phi_n ,số mũ giải mã d .Nếu có trường hợp số mũ d này bằng với số mũ d của challenge cho thì chúng ta thành công.
Full code
Sau khi run script thu được output
Điền vào terminal và get flag
Flag: picoCTF{7h053_51n5_4r3_n0_m0r3_2b7ad1ae}
ssh tới server
Crontab là một tiện ích trong các hệ điều hành giống Unix cho phép người dùng lên lịch để các tác vụ chạy tự động theo các khoảng thời gian được chỉ định.
Challenge cho 1 đoạn cipher base64
Decode bằng Cyberchef
Flag: picoCTF{base64_n3st3d_dic0d!n8_d0wnl04d3d_a2d1b8b6}
Flag: picoCTF{h34rd_und3r5700d_4ck_cba1c711}
Flag: picoCTF{Petya}
Flag: picoCTF{uS1ng_v1m_3dit0r_3dd6dcf4}
Flag: picoCTF{P64P_4N4L7S1S_SU55355FUL_f621fa37}
extract ảnh bằng binwalk:
Flag: picoCTF{Hiddinng_An_imag3_within_@n_ima9e_96539bea}