[Whitehat_Challenge04] Web02

Tiếp tục trên con đường múa lửa giải Challenge lần 4. Có thể có bạn sẽ hỏi là sao tự nhiên lại viết riêng hẳn 1 bài cho em nó, liệu có gì hay ho hay kì diệu ở đây không ???

Câu trả lời là : Không, chỉ đơn giản là server của bài này nó chết từ hôm qua tới giờ mới sống lại thôi, haizzzzz. Chúng tôi gọi đây là server "chất".

Đề bài:

Try to login. After successfully logging in, pls check all information carefully to get flag.
http://chall04-web02.wargame.whitehat.vn

Rất rõ ràng rồi, vấn đề đầu tiên là đăng nhập thành công. Sau một thôi một hồi thử các pattern thì thấy lỗi ntn :

Dự đoán khả năng rất lớn là site này dính tới SQLi, thường thì để tiết kiệm thời gian mình sẽ dùng sqlmap.

python sqlmap.py -u "http://chall04-web02.wargame.whitehat.vn/" --data="username=*" --dbs

Gotcha bitch. Dump thử db ra và thu được thông tin về username + password

Sử dụng cặp u/p : admin / a_unHashed_p4ssw0Rd_@@ đăng nhập vào web thì không có chuyện gì xảy ra, k thay đổi giao diện, k flag, k gì hết =.=.

Ngồi lục lọi một lúc, chợt nhớ ra ban đầu khi ngồi fuzz thì biết được con này đang dùng python, cụ thể hơn là Flask framework. Đối với Flask thì dính một lỗi khá cute đó là session của nó hoàn toàn có thể decode được.

Session: .eJyrVko3yUlTsqpWUkhSslIKz8koj8r1rQrK88sIy8opjAxNcU828vIIywtL9M0JtVSq1VEqzs9NLcnIzEuH64rMNTD1dXfzSPIIS0wN9SoDmuKd5GhrC1JdWpxalJeYm4qwIiwlOMXdLcIvPCMxqMqtPDLX0D3RyCsCqDkqzNDLIDIs2SAgEKS5FgCZojIp.DIZZTQ.PK7ROgxyaI89cN-cFBZJ9y75XkI

Về construct của Flask session thì ntn.:

P1.P2.P3 : P1 là thông tin về session
P2 là Expiration Date
P3 là Signature

Và 1 thông tin quan trọng nữa, đó là khi P1[0] = '.' thì có nghĩa nó đã bị compress.

Vậy mình sẽ sử dụng 2 thư viện của python, zlib để decompress và base64 để decode:

Flag ez_sqli_challenge
Submit WhiteHat{90b392577111bce3c9ac5b3dc587c370b9adad44}

--H3xX0r--

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.