Write-up Web SVATTT 2017

Sau vòng sơ khảo SVATTT 2017 thì mình học được rất nhiều kiến thức mới. Đã cố hết sức nhưng thua vẫn là thua. Thôi thì write-up 2 bài mình làm được để lưu lại sau này còn nhớ tới kỳ thi SVATTT cuối cùng.

WEB 100

Thiết nghĩ người ra đề đầu tư khá kỹ về nội dung và mê kiếm hiệp cực kỳ :v. Cơ mà lại để misconfigured làm bài mất vui :3.

Nhìn vào một bài web thì việc đầu tiên là coi robots.txt :v

Mình thấy có một đường dẫn tới /.git/

Theo thói quen thì google tìm tool mà lấy hết source từ git về thôi.

https://github.com/kost/dvcs-ripper/blob/master/rip-git.pl

Sau khi lấy hết source, nhìn vào trang index.php:

web100-1.PNG

Chắc người ra đề sensor cái password lại rồi, hardly bruteforce  thì ai dám dụng vào, nhìn ngay cái dưới thì phát hiện thêm một cách login là dùng cookie “auth” có dạng là một đoạn được mã hoá sao cho sau khi qua hàm fnDecrypt($auth, $SECRET_ENCRYPT); thì phải có dạng là: TieuPhong:blabla

Okay xem hàm fnDecrypt() trong secret.php

web100-2

Vậy là đoạn TieuPhong:blabla sẽ phải được mã hoá dạng

mcrypt_encrypt(MCrYpt_RIJNDAEL_256,$sSecretKey,”TieuPhong:blabla”,MCRYPT_MODE_ECB,iv)

Để ý kỹ thì iv được kèm vào đầu cái cookie “auth” của mình có độ dài 32bit.

Như vậy, iv do mình kiểm soát luôn, tuỳ ý chỉnh sửa mà server dựa đó mà decrypt.

Vậy mình viết hàm encrypt xong kèm iv tự mình chọn vào đầu cipher text rồi base64 lại là xong.

POC:
web100-3.PNG

Như mình đã nói đầu bài, do misconfigured nên có cách giải “bựa” hơn. Password để vào admin chính là nùi dấu *************** kia. Đâu phải hardly bruteforce đâu!

Web 300 – Second Order SQLi

Thiệt ra muốn xiaolin xíu về bài này mà thôi sợ bị bóc phốt nên nói thẳng ra đây là một bài Recon chứ không hẳn là web :v. Tuy nhiên qua bài này mình học được một kỹ thuật rất hay và đòi hỏi sự nhạy bén cao (mình chưa đủ trình).

Nhìn thấy đường dẫn dạng:

Weburl/index.php?page=login   mình nghĩ ngay đến LFI. Thử lấy source bằng php://filter thì có tất cả những gì mình muốn :v.

Web4-1.PNG

Để ý thấy tất cả các param mà mình có thể input đều bị: mysqli_real_escape_string() khiến cho nó không thể SQLi trực tiếp được. Ban đầu mình nhìn thấy biến $details có vẻ không gì cản phá mình control và chèn câu query vào. Lập tức google cách control cái $_SERVER[‘REMOTE_ADDR’].

Điều bất ập đến cuộc đời khi mình tìm ra được challenge gốc của bài web 300 này.

Plaidctf quals 2014 web-300: Whatscat

Mừng quá :v cứ theo write up mà làm. Người ta chỉ tận tình cách set up PTR record và DNS reverse cho VPS. Từ đó control được đoạn dns_get_record(gethostbyaddr($_SERVER[‘REMOTE_ADDR’]) Rồi SQLi mà lấy dữ liệu ra thôi. Chi tiết cách làm. Cảm ơn đồng đội tôi cgh0st đã ngồi cấu hình sml mà không thể giải được do sự ẩu tả không đọc kỹ write up. Có một cách hay hơn được để bên dưới và chính xác với những gì mà tác giả bài này mong muốn giải theo.

Viết đến đây thôi! cách phía dưới mình không nói nữa, có link rồi các bạn vào đọc nhé!

Kết lại:

SVATTT 2017 này thật sự rất tiếc khi mình bỏ lỡ bài web200 đáng lẽ phải làm được. Và cũng bỏ luôn cơ hội đến Đà Nẵng. Nhưng ngẫm lại, đến Đà Nẵng thì cũng không làm được gì nhiều vì team mình còn rất non tay. Tiếc thì cứ tiếc thôi nhưng mùa giải này để lại rất nhiều bài học kinh nghiệm hay và đầy hành :v

@UIT.NoPwn

Advertisements

One thought on “Write-up Web SVATTT 2017

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s