[Pentest Q&A cùng Tsu] #5: SQL Injection without information_schema Posted on June 7, 2017 Pre-Q&A ———— Hi, chào các bạn, l...
[Pentest Q&A cùng Tsu] #5: SQL Injection without information_schema
Pre-Q&A
————
Hi, chào các bạn, long time no see. Trước khi bắt đầu post này cần làm rõ rằng các bạn cần có kiến thức căn bản về SQL Injection. Cụ thể là những bước mà 1 người bình thường sẽ làm khi phát hiện ra lỗi SQLi ở một chương trình nào đó (tìm tên bảng, tên cột thông qua information_schema).
Nếu các bạn mới biết về SQLi, mình khuyến khích các bạn xem qua các tuts căn bản khác trước trên google hoặc view qua cái bài củ chuối với kiến thức sai tè le của mình (phần union based)
http://www.mediafire.com/file/kglfl608766rd11/TTSQLi.pptx
————
Hi, chào các bạn, long time no see. Trước khi bắt đầu post này cần làm rõ rằng các bạn cần có kiến thức căn bản về SQL Injection. Cụ thể là những bước mà 1 người bình thường sẽ làm khi phát hiện ra lỗi SQLi ở một chương trình nào đó (tìm tên bảng, tên cột thông qua information_schema).
Nếu các bạn mới biết về SQLi, mình khuyến khích các bạn xem qua các tuts căn bản khác trước trên google hoặc view qua cái bài củ chuối với kiến thức sai tè le của mình (phần union based)
————
Ok vào đề
————
Ok vào đề
————
Q1: Bạn ơi, trong lúc pentest mình fuzz ra lỗi sqli rồi, mà bị chặn mất information_schema, bây giờ mình phải làm sao.
A1: Đầu tiên mình sẽ nói lại về information_schema
Trong cơ sở dữ liệu luôn có 1 database là information_schema, đây là 1 metadata, bao gồm tất cả dữ liệu trong cơ sở dữ liệu. Trong databases này có 2 bảng là tables chứa tên của các table hiện có trong tất cả databases, và bảng columns chứa tên của các column hiện có trong tất cả database. Dựa vào đây ta có thể tìm được tên bảng, tên cột để tiến hành select được data cần thiết.

Q2: Ờ biết rồi, mình hỏi làm sao bypass cơ mà?
A2: Một cách bypass mà có lẽ nhiều người đã biết, đó là “union table”, cụ thể chúng ta sẽ làm 3 bước sau:
1/ Đoán hoặc bruteforce ra được table_name (vì table_name thường đặt rất dễ biết như users, address, info ..v..v.)


Như các bạn đã biết, để select dữ liệu, chúng ta thực hiện câu query: Select column_name from table_name , ở đây chúng ta đã tạo được 1 table fake với column_name tự đặt, vậy thì chỉ cần select ra thôi 

Q3: Cách của bạn chuối vãi, cuối cùng cũng phải đoán tên table???
Thế lỡ không đoán được thì sao??? bobo putang cyka
A3: Ok, Challenge Accepted.
Mình xin confirm lại vấn đề ở đây là:
SQLi được, nhưng bị filter information_schema, không đoán được tên table, tên column luôn, đúng hem? Let see….
SQLi được, nhưng bị filter information_schema, không đoán được tên table, tên column luôn, đúng hem? Let see….
MySQL ver 5.6 và upper có 1 “default storage engine” gọi là InnoDB.

Đi kèm với cái default storage engine này là 2 tables mới:

Thử digging vào 2 tables này xem thế nào…. Oops XD….:


COMMENTS