Jun 10, 2008
279 Views

Phân loại các kiểu SQL Injection !

Written by

1. SQL Injection :
– Cái này nói đến những cái lỗi thuộc về câu lệnh truy vấn SQL trực tiếp vào database và ta CÓ THỂ NHÌN THẤY ĐƯỢC.

2. Blind SQL Injection :
– Ám chỉ những lỗi truy vấn đi sâu vào trong mệnh đề logic với database, tất nhiên là LOGIC THÌ KHÔNG THỂ THẤY ĐƯỢC.
– Vì là LOGIC nên chỉ có 2 kiểu dữ liệu trả về TRUE hoặc FALSE. Nếu TRUE thì kết quả sẽ hiện ra còn FALSE thì sẽ không hiện ra

Một ví dụ điển hình về BLIND SQL INJECTION mà đến giờ vẫn chưa fix đây

www.fig.com.vn

Mệnh đề TRUE trả về kết quả :

http://fig.com.vn/sanpham.asp?ID=68%20and%201=1

Mệnh đề FALSE không trả về cái gì

http://fig.com.vn/sanpham.asp?ID=68%20and%201=0

Thấy rõ ràng sự khác biệt không ?

Tùy theo source code mà mức độ Injection nặng nhẹ khác nhau. Ví dụ cái site ở trên ở độ nặng vì ngoài Blind còn dính SQL Injection thường … <bó tay>

3. Blind SQL/XPath Injection
– Cái loại này còn cáo hơn cả Blind..Nó cũng như Blind không hề có thông báo gì hết và chỉ có 2 giá trị trả về TRUE hoặc FALSE nhưng áp dụng với các XMLDatabase ví dụ như DbXML, OraXML, XMLBase, ColdXML… Các loak này sử dụng cấu trúc XPath để truy cập dữ liệu trong file XML <XPath là cái gì,… các bạn tự tìm hiểu>
– giả sử trong Parent User Node ta có 2 child node của một user node :

<user id=”1″>
<userpass> my_pass </userpass>
<username> my_name </username>
</user>

câu truy vấn Xpath

string(//user[username/text()=’+txtName+’
and password/text()=’+txtPass+’]/user/text()]

thì truyền một tham số Injection đơn giản:

‘ X or 1=1 or ”=’

Nghiễm nhiên nếu giá trị trở về TRUE thì tự khắc đăng nhập được vào mà không cần biết user/pass .. Theo cấu trúc XPath thì account đăng nhập vào sẽ là account của user đầu tiên theo thứ tự trong cấu trúc XML <first node first>

Article Tags:
· ·
Article Categories:
Bug & Security
    http://linholiver.com

    https://linholiver.com/diary/about/