Clan ๖ۣۜVui ๖ۣۜLà ๖ۣۜChính
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Bây giờ là:
May 2024
MonTueWedThuFriSatSun
  12345
6789101112
13141516171819
20212223242526
2728293031  

Calendar Calendar

Đăng Nhập

Quên mật khẩu

Quy định và điều bạn cần biết

Mon Dec 30, 2013 9:13 am by Admin

DIỄN ĐÀN VUI LÀ CHÍNH KHÔNG PHẢI LÀ WEBSITE CHÍNH THỨC
☞   Giao lưu không cay cú
☞   Các mem không spam icon
☞   Các mem có quyền phản ánh mod với cách làm việc
☞   Các mem không sử dụng ngôn từ không thích hợp

1/ Các bài viết, hình ảnh, nhạc... gởi vào diễn đàn không được:
* Toàn bộ phần chủ đề (hoặc nội …

Comments: 1

Latest topics
» Quy định và điều bạn cần biết
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptySun Sep 21, 2014 7:32 pm by anhkhoa1597

» Hướng dẫn mod khung viền trong LMHT
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptyTue Jul 22, 2014 2:31 pm by ltn1993st

» Cần lời Gải Thích
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptyFri Jul 11, 2014 1:21 pm by Admin

» Van Gaal: Thiên tài hay kẻ phụ bạc từ góc nhìn tâm lý học
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptyTue Jul 08, 2014 12:33 pm by Admin

» Brazil – Đức: Điệu Samba loạn nhịp trước “xe tăng”
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptyTue Jul 08, 2014 12:23 pm by Admin

» Anh K giải thích cái này nhé!
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptyFri Jun 06, 2014 6:46 am by Mr.Keen

» SQL injection - Các cách phòng chống và kết luận P7
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptySun May 11, 2014 3:34 pm by Mr.Keen

» SQL injection - Một số tool khai thác P6
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptySun May 11, 2014 3:33 pm by Mr.Keen

» SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 EmptySun May 11, 2014 3:32 pm by Mr.Keen

Hỗ trợ Kỹ Thuật
Chat With me

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5

Go down

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Empty SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5

Bài gửi by Mr.Keen Sun May 11, 2014 3:32 pm

1. Cắt bớt nội dung câu truy vấn

Trong trường hợp muốn lờ đi những đoạn script trong câu truy vấn. Ví dụ đối với đoạn xử lý dưới đây, trong câu truy vấn đòi hỏi điều kiện active=1 nhưng chúng ta có thể comment (--, -- -, -+, #, /*, /**/, //, ;%00…) và lờ nó đi. Khi khai thác chúng ta thường không biết nội dung còn lại của câu truy vấn làm công việc gì nên sử dụng comment trong trường hợp này rất hiệu quả.
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Sau khi comment, truy vấn của chúng ta trở thành:
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
2. Bypass việc lọc các từ khóa
a. Inline Comment

Inline comment được sử dụng rất hiệu quả trong việc bypass lọc các khoảng trắng. Có thể sử dụng các kí tự sau để bypass lọc khoảng trắng: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0). Ví dụ:
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Hay bypass lọc các từ khóa (khả dụng với MySql). Trong ví dụ dưới đây, từ khóa union và password nằm trong blacklist nên đã bị chặn, chúng ta có thể bypass bằng cách:
SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
b. Thay thế các từ khóa

Khi khai thác SQL injection chúng ta thường sử dụng những từ khóa như: union, select, information_schema... Nhiều trường hợp người lập trình chỉ đơn giản là thay thế những từ khóa đó đi:

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Chúng ta dễ dàng nhận thấy rằng đoạn mã xử lý trên còn thiếu xót. Nếu đơn thuần chỉ là pattern matching thì cách bypass cực kỳ đơn giản. Chúng ta hãy áp dụng case sensitive, khi đó chữ viết hoa và viết thường được hiểu khác nhau. 
Lúc này thay vì sử dụng từ khóa:
Mã nguồn HTML:
[ltr]select, union…[/ltr]

Chúng ta sẽ sử dụng:
Mã nguồn HTML:
[ltr]SeLEcT, UniOn…[/ltr]

Cơ sở của cách bypass này là những hệ quản trị cơ sở dữ liệu không phân biệt hoa thường với những từ khóa.
Trong một số trường hợp, ứng dụng web sẽ lọc bỏ toàn bộ hay một phần từ khóa nào đó (union, select…). Ta sẽ bypass như sau:
Mã nguồn HTML:
[ltr]id=1+uniunionon+SeLselectecT+1,2,3-- -[/ltr]

Sau khi union, select bị lọc bỏ bởi ứng dụng web, ta sẽ còn lại câu truy vấn đúng như sau:
Mã nguồn HTML:
[ltr]id=1+union+SeLecT+1,2,3-- -[/ltr]

c. Character encoding

Chúng ta có thể bypass khi WAF (Web Application Firewall) chặn các từ khóa bằng cách encode chúng. Rất nhiều ứng dụng WAF sẽ chỉ decode truy vấn một lần và lọc bỏ các từ khóa trong blacklist, khi đó chúng ta hãy encode 2 lần request như vậy có thể bypass được trong trường hợp này.

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
3. Bypass chặn nháy đơn, nháy kép

- Chúng ta hãy xét một ví dụ trước khi tìm hiểu cụ thể cách bypass này.

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Trong kịch bản này, chúng ta đã biết được một bảng trong cơ sở dữ liệu có tên là users. Công việc tiếp theo là phải biết được tên cột trong bảng để lấy được thông tin của nó. Như trong câu truy vấn trên, chúng ta sử dụng điều kiện: table_name='users'. Nhưng nếu cả dấu nháy đơn (') và dấu nháy kép (") đều bị WAF chặn thì chúng ta không thể sử dụng 'users' hay "users" được nữa. Vậy phải giải quyết vấn đề này như thế nào? Trong các hệ cơ sở dữ liệu built sẵn cho chúng ta function giải quyết rất tốt vấn đề này đó là hàm CHAR( ) (đối với Oracle là CHR()). Ví dụ trong câu truy vấn trên chúng ta sẽ bypass bằng cách:

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment

Những lập trình viên php đều đã rất quen thuộc với hàm addslashes(). Hàm addslashes() có tác dụng thêm vào trước những ký tự đặc biệt như nháy đơn ('), nháy kép ("), backslash (\), NUL (null byte) ký tự "\" giúp hệ quản trị cơ sở dữ liệu không gặp khó khăn và nhầm lẫn khi xử lý chuỗi chứa các ký tự đó. Như vậy, khi chúng ta muốn inject vào câu truy vấn theo như kịch bản:name='someName' or '1'='1'-- thì kết quả không còn đúng như chúng ta mong đợi nữa. 

Tuy vậy, đã có kỹ thuật giúp bypass hàm addslashes() để inject ký tự nháy đơn ('). Kỹ thuật này đã được public từ khá lâu, và để thực hiện kỹ thuật này cũng khá khó khăn vì nó bị ràng buộc với kiểu mã hóa áp dụng cho website. Các bạn có thể tìm hiểu thêm về kỹ thuật này qua một số bài viết sau: 
http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string

4. Bypass lỗi "illegal mix of collation for operation UNION"

Trong một số hệ quản trị (thường thấy trong MySql), các database, các table khi đã được set collation thì khi sử dụng từ khóaUNION sẽ bị báo lỗi "illegal mix of collation for operation UNION". Việc thiết lập collation (đối chiếu font mã hóa) có thể do chủ định của người thiết kế cơ sở dữ liệu hoặc do được thiết lập mặc định của MySql. Trong trường hợp dùng union, chúng ta phải đảm bảo điều kiện giá trị select ở từng trường phải có kiểu mã tương ứng đã được định nghĩa. Theo mình đánh giá, lỗi này là khá phổ biến, đặc biệt đối với các CMS chạy Apache MySql. Mọi người có thể tìm hiểu thêm tại địa chỉ: http://bugs.mysql.com/bug.php?id=57926.
Trong trường hợp này chúng ta có thể sử dụng các cách convert thành kiểu mã hóa phù hợp. 
Ví dụ trong trường hợp sau:

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Trong câu truy vấn trên, nếu column1 đã được set collation là Unicode-UTF8 hay _latin1 chẳng hạn, thì những gì được select từcolumn2 sẽ phải được convert thành mã tương ứng. Ta có thể ép kiểu như sau:

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Chúng ta có thấy nhược điểm trong cách bypass này là chúng ta phải biết được mã được collation là _latin1. Một cách bypass theo mình là tốt hơn đó là sử dụng hàm mã hóa và giải mã hex và unhex.

SQL injection - Một số kỹ thuật vượt qua cơ chế lọc P5 Attachment
Có nhiều hàm khác có thể được sử dụng thay cho hex và unhex. Chúng ta có thể tìm hiểu kỹ thêm vấn đề này ở đây:http://mysql.rjweb.org/doc.php/charcoll

Mr.Keen
Admin
Admin

Tổng số bài gửi : 46
Join date : 30/12/2013
Age : 28
Đến từ : Phong Điền Cần Thơ

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết