Thursday, September 13, 2018

[Writeup] OverTheWire - Natas: Leve0 - level10

Hôm nay lướt lại vài bài CTF cũ chợt nhận ra mình đã để trang blog này mốc meo cũng đã 4 tháng rồi nên hôm nay mình kiếm cái gì đó để viết, để học,... Trang hôm nay mình muốn nhắm tới là overthewire.org, một trang hay và chứa rất nhiều kiến thức basic. SVATTT cũng cận kề, và mình cũng nhận ra không có đất cho những người làm Forensics như mình nữa mà mình cần phải tự try hard các mảng khác mà web, reverse, pwn là 3 mảng chính là 3 yếu tố quyết định thứ hạng...

Level0: Truy cập site đầu tiên với username và password đã được cho, dựa vào hint:

You can find the password for the next level on this page.

Ta có thể đoán được flag chắc nằm trong source code, ctrl+u ta có được password của level tiếp theo.

Password: gtVrDuiDfck831PqWsLEZy5gyDz1clto 

Level1: Bài này cũng giống như level0 nhưng không cho phép sử dụng chuột phải, trong khi đó mình lại dùng ctrl+u để xem source code nên cũng không đáng ngại. 😀

Password: ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi

Level2: Xem source code ta thấy rằng có tab img là tab hiển thị hình ảnh trong html nhưng lại không có ảnh nào hiển thị trong trang thử click vào nhưng không có gì ngoài một màu đen. Ta để ý đường dẫn là files/pixels.png vậy ta thử xoá pixels.png để truy cập thư mục files xem sao. Ta thấy ngay có 1 file là user.txt, click vào ta sẽ thấy 2 cột username password và có tài khoản của natas lv3.

Pasword: sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

Level3: Xem source code có dòng chữ :

No more information leaks!! Not even Google will find it this time...

Dòng đó ý muốn nói đến file robots.txt vì file này là dạng file không cho search engine truy cập vào một hình ảnh, đường dẫn,... nào đó của trang web. Vậy thì ta thử mở file robots.txt lên xem sao. Ngay lập tức ta thấy thư mục s3cr3t. Truy cập vào thư mục này ta thấy có file users.txt. Click chọn ta có được username và password của level4.

Password: Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

Level4: Hmm, nhìn vào hint:

Access disallowed. You are visiting from "http://natas4.natas.labs.overthewire.org/" while authorized users should come only from "http://natas5.natas.labs.overthewire.org/" 

Có nghĩa là ta phải visit từ http://natas5.natas.labs.overthewire.org/ Vậy làm sao ta có thể visit từ website đó. Sử dụng burpsuite mình thấy dòng referer của header, ok vậy thì sửa lại sao cho đúng yêu cầu là sẽ được thôi.

Password: iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq


Level5:

Access disallowed. You are not logged in
Whut? Vậy là mình phải làm cách nào đó để login đúng. Thử dùng Burpsuite một lần nữa, để ý đến cookie ta thấy loggedin=0. Wew, nếu 0 là false thì 1 là true thôi sửa lại bằng 1, ta sẽ có được password.

Password: aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

Level6:

View source ta thấy rằng nếu ta submit đúng giá trị của biến secret ta sẽ có password cho level tiếp theo, ban đầu mình cứ nghĩ rằng sumbit 'secret' là sẽ được nhưng một hồi thử nhiều kiểu vẫn không được. Để ý đến include, mình thử search google và đó là hàm gọi file để cũng thực hiện công việc nào đấy, vậy có thể giá trị đúng của biến secret nằm trong file secret.inc, truy cập theo đường dẫn, mình có được giá trị của biến secret:
Ok giờ submit và lấy password cho level7 thôi.

Password: 7z3hEENjQtflzgnT29q7wAvMNfZdh0i9

Level7:

View sourcecode ta thấy hint: password for webuser natas8 is in /etc/natas_webpass/natas8

Ố vậy chắc nó ở đường dẫn http://natas7.natas.labs.overthewire.org/etc/natas_webpass/natas8 chăng? Nope không phải, để ý thấy có Home và About khi click vào ta sẽ có đường dẫn index.php?page= search google thì đó là lỗi File Inclusion. Vậy thay vì đường dẫn như ban đầu, ta sửa lại thành 
http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8. Và ta có password của level tiếp theo.

Password: DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe

Level8:

View sourcecode code ta thấy nó là một bài tương tự như level6 nhưng có thuật toán và nâng cao hơn một chút đối với bài level6. Đọc source ta hiểu được rằng nếu ta nhập đúng với biến encodedSecret ta sẽ có được password cho level9. Tuy nhiên thì biến encodedSecret đã bị encrypt xem source ta biết được cách encrypt là encode secret thành base64 sau đó đổi ngược chuỗi đó lại và chuyển về mã hex. Thế thì ta làm ngược lại quy trình thì sẽ ra được biến secret: oubWYf2kBq. Submit và có được password:

W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

Level9:


Ta thấy rằng trong source code có hàm passthru nó là một lệnh php thực thi command line và trả về giá trị thô. Vậy trong source grep -i $key dictionary.txt nếu ta nhập bất cứ kí tự nào trên bàn phím chương trình cũng sẽ thực hiện lệnh grep với dicitonary.txt. Tuy nhiên trong linux để kết thúc một câu lệnh và thực hiện tiếp câu lệnh tiếp theo ta có thể dùng dấu ; và để bỏ đi phần sau ta dùng dấu #. Vậy câu lệnh mà chương trình thực thi sẽ như sau:
grep -i; $key #dictionary.txt
Bắt đầu với lệnh cơ bản nhất a; ls #
Cool, vậy phần tiếp theo file password của level 10 chứa ở đâu? Quay về trang http://overthewire.org/wargames/natas/ ta sẽ thấy có dòng chữ:

 Ok cat password thôi.
a; cat ../../../../etc/natas_webpass/natas10 #

Password: nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

Level10:
Tương tự như bài 9 nhưng lần này hàm preg_match đã filter mất dấu ; nên chúng ta phải dùng cách khác. Thì trong linux lệnh grep sẽ tìm giá trị sau nó có trong cặp dấu nháy đơn hoặc không (') ví dụ grep 'a' và grep a thì sẽ cho kết quả tương tự. Ở đây mình dùng cặp dấu nháy đơn để dừng lệnh grep chuyển sang lệnh khác và cũng dùng dấu # để vô hiệu những câu lệnh phía sau. Vậy mình sẽ input sẽ là: '' cat ../../../../etc/natas_webpass/natas11 #
Và vậy là ta có password cho level11:

Password: U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

0 comments:

Post a Comment