Xin chào, hôm nay chúng ta cùng đến với một Challenge về mảng Web trên Hackthebox nhé!
Ready!!
Đây là giao diện của trang web khi mình bắt đầu truy cập.
Qua đây cộng với phần mô tả của challenge thì chúng ta có thể biết việc của mình là phải encript chuỗi r4q6q5pBOCNyWXcqV0EH
bằng thuật toán MD5.
Mình đã thử encript sau đó submit nhưng kết quả nhận được là to slow!
.
Vì vậy phải có một cách khác nhanh hơn chính là viết script để tự động hóa việc submit. Các bạn sẽ có rất nhiều cách để viết scritp và ở đây mình dùng python:
|
|
Phân tích code
- Đầu tiên mình tạo một request tới trang web kia.Và đây là kết quả của biến
rp
(Sau khi code chạy xong dòng 7)
1 2 3 4 5 6 7 8 9 10 11 12
<html> <head> <title>emdee five for life</title> </head> <body style="background-color:powderblue;"> <h1 align='center'>MD5 encrypt this string</h1><h3 align='center'>zguJrmZCRFfHNNnR5clq</h3><center><form action="" method="post"> <input type="text" name="hash" placeholder="MD5" align='center'></input> </br> <input type="submit" value="Submit"></input> </form></center> </body> </html>
- Việc tiếp theo là phải cắt được đoạn string (trong trường hợp này là:
zguJrmZCRFfHNNnR5clq
) để mã hóa rồi submit. - Có rất nhiều cách để có thể cắt được chuỗi đó. Và ở đây mình dùng thấy chỉ có một
<h3 align='center'>
nên nếu mình dùng hàm split thì sẽ cắt được đoạn html thành hai hai phần.Kết quả của hàm split trong trường hợp này một cái mảng gồm hai phần tử (bên trái và bên phải của
<h3 align='center'>
) - Khi đó ta thấy chuỗi cần lấy ra nằm ở ngay đầu phần tử thứ [1] của mảng. Tiếp tục căt phần tử ấy theo
<
thì ta được chuỗi đó nằm ở vị trí [0] của mảng lần này. (Dòng 9) - Sau đó ta thực hiện mã hóa chuỗi bằng thuật toán MD5 (Dòng 11)
- Để gửi được đi thì ta phải chuẩn hóa nó theo dạng cấu trúc như dòng thứ 12. Chữ
hash
là giá trị của biếnname
của thẻinput
trong đoạn html của biếnrp
. - Cuối cùng là post lên để nhận flag.
Note
Có thể bạn chạy code lần đầu sẽ không thấy flag. Nguyên nhân là do dán MD5 vào vẫn chậm hơn yêu cầu bài toán. Bạn có thể khắc phục bằng cách tối ưu đoạn code hoặc sử dụng ngôn ngữ khác với những thuật toán nhanh hơn. Còn không thì chạy lại vài lần và đây là kết quả: