Hi bà con,
Net300: cấu hình dịch vụ để xem flag trên một địa chỉ đang bị chặn.
Network300
whitehat khá đơn giản, sau khi kết nối ssh băng một tài khỏan của BTC
cung cấp, chúng ta sẽ bị jail shell ( không thể làm gì được nữa ). Nên
trước tiên phải phá jail ra,
Đầu tiên ta thử: /bin/bash: permision denied => không vui rồi, /bin/sh : Bingo ok, đã sang shell mới, tuy nhiên shell này là chế độ postfix của bash shell nên các lệnh bash shell cấm thì nó cũng cấm, ta thử iptables -L => Operation not permitted : bingo, ta có thể thực hiện lệnh này để mở port, cho phép ip kết nối vào webserver đọc flag.
Ta thử sudo iptables -L => cho phép chạy lệnh, vậy ta có quyền sudo với iptabtles.
Ta xem public ip của mình trong trang myip. sau đó chạy lệnh:
Sudo iptables -I INPUT 1 -s myip -j ACCECPT
Bingo. vào web và kiểm tra lại, flag sẽ hiện ra.
Severus
khoquachoqua
Tổng số lượt xem trang
Chủ Nhật, 26 tháng 10, 2014
[Whitehat Grindprix 2014] Forensic 300
Hi bà con,
Forensic 300 là một bài về phân tích bản backup của android.
Trước tiên ta dùng binwalk để xem các header file => Có ubicom và Troc filesystem là lạ, tuy nhiên đây chỉ là backup của firmware android. Ta có thể bỏ qua.
Việc đầu tiên là cần phải extract được tất cả các file trong backup, ta sử dụng công cụ Android backup extractor. Các bạn có thể tải tại địa chỉ sau:
http://sourceforge.net/projects/adbextractor/
Công cụ trên sẽ chuyển đổi từ định dạng backup của android sang định dạng nén tar. Sau đó ta dùng lệnh để extract ra toàn bộ các file:
tar xvf output_extract
Ta tiến hành tìm từ khóa whithat như sau:
grep -i whitehat . -r
Không có output không vui rồi, sau đó ta tìm xem trong các thư mục 0 sẽ có gì, thư mục apps không nên chứa flag vì đó là thư mục hệ thống, chứa các file cài đặt, vậy flag phải được giấu trong các định dạng nào đó như hình ảnh, db file.
Sau khi tìm kiếm các hình ảnh không khả thi vì sử dụng strings, outgess,... ta xem đến các file db,
ls -R | grep db
Ta thu được các file db trong đó có file msgstore.db.crypt7 của Whatapps, các file db khác có định dạng sqlite3 có thể đọc bằng lệnh strings, do grep không cho ra kết quả có thể bỏ qua.
Ta giả thiết rằng flag được giấu ở đây, việc cần làm là giải mã file trên.
Sau khi google ta phát hiện ra link sau:
http://stackoverflow.com/questions/24475815/how-to-convert-msgstore-db-crypt7-to-msgstore-db-from-whatsapp-in-android
Lúc này ta áp dụng các lệnh để giải mã,
Forensic 300 là một bài về phân tích bản backup của android.
Trước tiên ta dùng binwalk để xem các header file => Có ubicom và Troc filesystem là lạ, tuy nhiên đây chỉ là backup của firmware android. Ta có thể bỏ qua.
Việc đầu tiên là cần phải extract được tất cả các file trong backup, ta sử dụng công cụ Android backup extractor. Các bạn có thể tải tại địa chỉ sau:
http://sourceforge.net/projects/adbextractor/
Công cụ trên sẽ chuyển đổi từ định dạng backup của android sang định dạng nén tar. Sau đó ta dùng lệnh để extract ra toàn bộ các file:
tar xvf output_extract
Ta tiến hành tìm từ khóa whithat như sau:
grep -i whitehat . -r
Không có output không vui rồi, sau đó ta tìm xem trong các thư mục 0 sẽ có gì, thư mục apps không nên chứa flag vì đó là thư mục hệ thống, chứa các file cài đặt, vậy flag phải được giấu trong các định dạng nào đó như hình ảnh, db file.
Sau khi tìm kiếm các hình ảnh không khả thi vì sử dụng strings, outgess,... ta xem đến các file db,
ls -R | grep db
Ta thu được các file db trong đó có file msgstore.db.crypt7 của Whatapps, các file db khác có định dạng sqlite3 có thể đọc bằng lệnh strings, do grep không cho ra kết quả có thể bỏ qua.
Ta giả thiết rằng flag được giấu ở đây, việc cần làm là giải mã file trên.
Sau khi google ta phát hiện ra link sau:
http://stackoverflow.com/questions/24475815/how-to-convert-msgstore-db-crypt7-to-msgstore-db-from-whatsapp-in-android
Lúc này ta áp dụng các lệnh để giải mã,
hexdump -e '2/1 "%02x"' key | cut -b 253-316 > aes.txthexdump -e '2/1 "%02x"' key | cut -b 221-252 > iv.txtdd if=msgstore.db.crypt7 of=msgstore.db.crypt7.nohdr ibs=67 skip=1openssl
enc -aes-256-cbc -d -nosalt -nopad -bufsize 16384 -in
msgstore.db.crypt7.nohdr -K $(cat aes.txt) -iv $(cat iv.txt) >
msgstore.dbStrings msgstore.db
Bingo ta đã tìm ra flag.SeverusThứ Hai, 29 tháng 9, 2014
TRIVIAL - CSAW 2014
TRIVIAL
Đây là 3 bài trivial mình đã giải trong kỳ CTF này và cũng muốn chia sẽ cách tư duy để có thể tìm ra. ( Mặc dù đa số ai cũng giải được rồi )
- This is a type of informal security meetup that has been gaining popularity in different cities over the last several years (citysec)
- This is what geohot and other members of the CTF community are calling live streamed CTF competitions where spectators can watch competitors screens as they solve challenges. (livectf)
- This is the Twitter handle of the student who runs CSAW CTF. (@poopsec)
Bài 1:
Theo như đề bài mình hiểu đây là 1 loại "informal security meetup" do đó mình search cụm từ này và ra 1 đống cái meetup như NYSEC, SAFBSec, …
Nhung submit các kiểu thì mấy cái đó cũng đâu đúng đâu.
Từ đó mình phải tìm keyword khác để search. Từ đó mình chú ý đển cụm "popularity in different cities" vì mình chưa sử dụng nó và nó khá quan trọng vì theo mình hiểu là nhiều thành phố sử dụng nó.
Từ đó mình có cụm keyword là "informal security meetup popularity in different cities"
Mình search key word như trên và tìm được citysec và thử submit và thành công ( vì thấy có chữ city rất khả nghi )
Bài 2:
Lúc mình làm bài này mình ko hiểu geohot là gì ( do én lịt ngu ngu nữa nên hiểu sai ý mà mình sẽ ko để cập cái vụ đó :v )
Nói chung sau 1 hồi biết geohot là 1 siêu nhân hacker ( đại loại thế ) mình mới coi kỹ và hiểu nội dung là: geohot và các ng chơi CTF khác giao tiếp với nhau qua 1 kênh nào như stream ( do mình mỗi tối hay coi chơi dota2 nên mình cũng khá rành vụ này. Từ đó mình nghĩ ngay đến 1 kênh stream trên Twitch )
Keyword: "geohot and players ctf communica live stream"
và ta ra kết quả: livectf.
Bài 3:
Bài này mình bay vào làm liền lun. Do nó nói khá rõ là 1 sv ( student ) ng tổ chức CSAW CTF mình vào ngay cái judges chỗ menu để xem thông tin ng tổ chức và thấy có Twitter và mình bấm vào xem thôi và submit thử cái URL của Twitter nhưng không được :(
Cái mình nghĩ đến cái @poopsec thử xem và thế là thành công :P
Cái mình nghĩ đến cái @poopsec thử xem và thế là thành công :P
Kinh nghiệm rút được là nên rút trích những keyword theo mình là quan trọng và chú ý search đầy đủ thông tin đừng nên bỏ sót 1 manh mối nào cả :3 vì tất cả cho là đủ dùng :D
Thứ Hai, 15 tháng 9, 2014
Writeup bài immiscible NCN quals 2014
Mở
bằng Winhex ta thấy magic number là 1F 8B
OK
Vậy nó là file Gzip. Sử dụng 7zip để extract file ta được
file ctf.py
Mở
file ctf.py ra đọc thì thấy cú pháp tùm lum. Có dòng quan
trọng là # -*- coding: rot13 -*-
Vậy
ta sử dụng Rot13 để lấy plain text
#!/hfe/ova/rai
clguba
#
-*- pbqvat: ebg13 -*-
import
os
import
marshal
import
new
global
flag
def
f():
global flag
flag = "Nope!".decode("ebg13")
bytecode
= """
YwAAAAAAAAAAAwAAAEAAAABzlwAAAGQAAGQBAGwAAG0BAFoBAAFkAABkAgBsAgBtAwBaAwABZQMA
ZAMAZAQAgwIAZAUAawIAcpMAZAYAYQQAdAQAZAcAN2EEAHQEAGQIADdhBAB0BABkCQA3YQQAdAQA
agUAZAoAZAQAgwIAYQQAdAQAagYAZAsAgwEAYQQAZAwAZQEAdAQAgwEAagcAgwAAF2EEAG4AAGQN
AFMoDgAAAGn/////KAEAAABzBAAAAHNoYTEoAQAAAHMGAAAAZ2V0ZW52cwsAAABOT19DT05fTkFN
RXMAAAAAcwEAAABZczEAAAAgNTcgNjggNjEgNzQgMjAgNjkgNzMgMjAgNzQgNjggNjUgMjAgNjEg
NjkgNzIgMmQgczEAAAAgNzMgNzAgNjUgNjUgNjQgMjAgNzYgNjUgNmMgNmYgNjMgNjkgNzQgNzkg
MjAgNmYgczEAAAAgNjYgMjAgNjEgNmUgMjAgNzUgNmUgNmMgNjEgNjQgNjUgNmUgMjAgNzMgNzcg
NjEgcxAAAAAgNmMgNmMgNmYgNzcgM2YgcwEAAAAgcwMAAABoZXhzAwAAAE5DTk4oCAAAAHMHAAAA
aGFzaGxpYnMEAAAAc2hhMXMCAAAAb3NzBgAAAGdldGVudnMEAAAAZmxhZ3MHAAAAcmVwbGFjZXMG
AAAAZGVjb2RlcwkAAABoZXhkaWdlc3QoAAAAACgAAAAAKAAAAABzCAAAADxzdHJpbmc+cwgAAAA8
bW9kdWxlPgIAAABzEgAAABABEAEVAgYBCgEKAQoBEgEPAQ==
"""
if
__name__ != "__main__".decode("ebg13"):
f = new.function(codeobj, globals(), "f".decode("ebg13"),
None, None)
f()
print
flag
Chỉnh
sửa lại 1 chút:
Ở bytecode ta nhận ra nó là giá trị base64 encode
Vì vậy ở codeobj ta sửa ebg13 thành base64
Ở main không quan trọng ta bỏ luôn dòng này
Ở bytecode ta nhận ra nó là giá trị base64 encode
Vì vậy ở codeobj ta sửa ebg13 thành base64
Ở main không quan trọng ta bỏ luôn dòng này
hàm
f cũng không có gì
Vậy
flag sẽ nằm ở bytecode. Bytecode được load vào codeobj
thành object
Ta
Disassemble object này ra: (import dis và sử dụng
dis.dis(codeobj)
E:\CTF\Noconname\immiscible~>ctf.py
2 0 LOAD_CONST 0 (-1)
3 LOAD_CONST 1 (('sha1',))
6 IMPORT_NAME 0 (hashlib)
9 IMPORT_FROM 1 (sha1)
12 STORE_NAME 1 (sha1)
15 POP_TOP
3 16 LOAD_CONST 0 (-1)
19 LOAD_CONST 2 (('getenv',))
22 IMPORT_NAME 2 (os)
25 IMPORT_FROM 3 (getenv)
28 STORE_NAME 3 (getenv)
31 POP_TOP
4 32 LOAD_NAME 3 (getenv)
35 LOAD_CONST 3 ('NO_CON_NAME')
38 LOAD_CONST 4 ('')
41 CALL_FUNCTION 2
44 LOAD_CONST 5 ('Y')
47 COMPARE_OP 2 (==)
50 POP_JUMP_IF_FALSE 147
6 53 LOAD_CONST 6 (' 57 68 61 74 20 69 73 20
74 68 65 20 61 69 72 2d ')
56 STORE_GLOBAL 4 (flag)
7 59 LOAD_GLOBAL 4 (flag)
62 LOAD_CONST 7 (' 73 70 65 65 64 20 76 65
6c 6f 63 69 74 79 20 6f ')
65 INPLACE_ADD
66 STORE_GLOBAL 4 (flag)
8 69 LOAD_GLOBAL 4 (flag)
72 LOAD_CONST 8 (' 66 20 61 6e 20 75 6e 6c
61 64 65 6e 20 73 77 61 ')
75 INPLACE_ADD
76 STORE_GLOBAL 4 (flag)
9 79 LOAD_GLOBAL 4 (flag)
82 LOAD_CONST 9 (' 6c 6c 6f 77 3f ')
85 INPLACE_ADD
86 STORE_GLOBAL 4 (flag)
10 89 LOAD_GLOBAL 4 (flag)
92 LOAD_ATTR 5 (replace)
95 LOAD_CONST 10 (' ')
98 LOAD_CONST 4 ('')
101 CALL_FUNCTION 2
104 STORE_GLOBAL 4 (flag)
11 107 LOAD_GLOBAL 4 (flag)
110 LOAD_ATTR 6 (decode)
113 LOAD_CONST 11 ('hex')
116 CALL_FUNCTION 1
119 STORE_GLOBAL 4 (flag)
12 122 LOAD_CONST 12 ('NCN')
125 LOAD_NAME 1 (sha1)
128 LOAD_GLOBAL 4 (flag)
131 CALL_FUNCTION 1
134 LOAD_ATTR 7 (hexdigest)
137 CALL_FUNCTION 0
140 BINARY_ADD
141 STORE_GLOBAL 4 (flag)
144 JUMP_FORWARD 0 (to 147)
>> 147 LOAD_CONST 13 (None)
150 RETURN_VALUE
None
Như
vậy flag sau khi gán và INPLACE_ADD ta có: 57 68 61 74 20 69 73
20 74 68 65 20 61 69 72 2d 73 70 65 65 64 20 76 65 6c 6f 63 69 74 79
20 6f 66 20 61 6e 20 75 6e 6c 61 64 65 6e 20 73 77 616c 6c 6f 77
3f
Tiếp theo flag sẽ được replace các kí tự trắng. Và decode hex ra.
Flag = ‘What is the air-speed velocity of an unladen swallow?’
Tiếp theo flag sẽ được replace các kí tự trắng. Và decode hex ra.
Flag = ‘What is the air-speed velocity of an unladen swallow?’
Tiếp
theo: ta có flag = ‘NCN’ + sha1(flag) =
NCN6ceeeff26e72a40b71e6029a7149ad0626fcf310
Submit
thôi :D
Phiêu
Lãng – KQCQ
Đăng ký:
Bài đăng (Atom)