[WebSec] Level 2
Information Gathering
Challenge này cũng giống tương tự như Level 1. Tuy nhiên, có thêm 1 hàm preg_replace() để filter các từ như union
, order
, select
, from
, group
, by
.
Source code
1 |
|
Quan sát thấy dòng 11, sử dụng query nối chuỗi bởi biến $injection
. Từ chỗ này, mình có thể ngắt query và chèn payloads của mình vào để khai thác.
Hoặc mình nhập vào dấu '
thì trang web sẽ báo lỗi như hình dưới, từ đó mình xác định được lỗi SQLi.
Exploit
Đầu tiên phải xác định được query select mấy cột.
Nhìn vào query
dòng 11 mình xác định 2 cột được select
là id
và username
.
Mình có thể xác định cấu trúc sql được dùng bằng cách.
1 |
|
Tuy nhiên, nếu dùng các từ khoá như select
, from
, … thì sẽ bị replace
thành kí tự trống (là bị xoá mất luôn).
1 |
|
Để bypass hàm preg_replace()
trong trường hợp trên thì mình dùng phương pháp REPLACED KEYWORDS
.
Ví dụ: seSELECTlect
sau khi qua preg_replace()
là select
.
Tương tự với các từ khoá cần dùng mà bị replace
thì cứ áp dụng vào.
Check sql struct
1 |
|
Bước cuối cùng chỉ cần lấy flag
là xong.
1 |
|