Cơ bản, trang này có chức năng là nhận input từ người dùng và convert sang cái dòng chữ màu mè kia.
Khả năng param neon được xử lý và render ra màn hình.
Tuy nhiên, hầu hết các kí tự đặc biệt đều đã được filter và dừng xử lý.
Vì admin không cung cấp source code nên cũng hơi bí bách. Ngồi vò đầu bứt tóc một lúc, vô tình trigger ra một exception và nhảy đến trang debug khi neon=%ab
. (Nhắc lại đây chỉ là vô tình =)) )
Lúc này đã biết đoạn code dòng 14 kia chỉ cho phép input nhập vào chỉ chứa chữ cái, chữ số và dấu khoảng trắng.
Vậy liệu chúng ta có thể bypass từ đây, hay đi tìm 1 hướng khác??
Sau 30p ngồi nghiên cứu cái docs của ruby, tui cũng lục ra được cái này:
Ở đây nè: https://ruby-doc.org/core-2.4.1/Regexp.html#:~:text=^ - Matches beginning,end of line
Tức là cái ^
nó match từ đầu dòng, và $
match đến cuối dòng, hay nói cách khác, đoạn ReGex kia nó chỉ được áp dụng trong 1 dòng. Từ đó, ta có thể inject payload tùy ý trong dòng mới mà không phải qua cái filter kia.
Yahh, bypass được ùi nhé, công việc còn lại là craft 1 payload hoàn chỉnh để rce.
Mệt quá, lười search google nên tui lôi thần chú ra đọc cho nhanh úm ba la xì bùa
output trả về true tức là command đã thực thi thành công. Tiến hành đọc flag
Done!