Công cụ này đƣợc phát triển bằng ngôn ngữ Perl, một ngôn ngữ khá phổ biến
Đầu tiên “Crawler” sẽ thu thập thông tin và dựng lại cấu trúc trang web(bƣớc 1). Sau đó các điểm nóng sẽ đƣợc xác định (bƣớc 2). Từ đó “injector ” sẽ thực hiện gửi các yêu cầu tới ứng dụng web sử dụng các SQL string library(bƣớc 3). Cuối cùng các thông báo lỗi trả ra từ ứng dụng web sẽ đƣợc so sánh với Error patterns libraray. Nếu
lỗi đƣợc xác định của DBMS nào thì V1p3R sẽ thực hiện tiêm các câu lệnh đặc biệt tƣơng ứng. Nếu một thông báo là mới, chƣa xác định đƣợc của DBMS nào thì V1p3R cung cấp khản năng xác định các mẫu cơ sở dữ liệu mới và lƣu chúng vào thƣ viện. Cuối cùng là lƣu các thông tin báo cáo vào Testlog(bƣớc 4)
2.3. Thuật toán phát hiện lỗ hổng trong cổng thông tin điện tử
2.3.1. Học máy
Sử dụng một trình thu thập web để tìm các lỗ hổng trong các ứng dụng web và tạo ra mã tấn công bằng cách sử dụng danh sách mẫu và kỹ thuật tấn công. Sử dụng các mã tấn công đƣợc tạo ra, các lỗ hổng SQL injection có thể đƣợc tìm thấy. Vì phƣơng pháp này sử dụng học máy, nên nó có hiệu quả hơn so với kiểm thử thâm nhập truyền thống. Tuy nhiên, phƣơng pháp này không thể phát hiện tất cả lỗ hổng
2.3.2. Cây phân tích cú pháp truy vấn
Cây phân tích cú pháp truy vấn SQL là một cấu trúc dữ liệu đƣợc sử dụng để phân tích cú pháp của một câu lệnh truy vấn SQL[8]. Thuật toán này đƣợc dùng trong phƣơng pháp phân tích tĩnh. Ngƣời lập trình viên ứng dụng Web cung cấp phần mã nguồn cứng (hard - coded) của cây phân tích cú pháp và phần của ngƣời dùng cung cấp đƣợc biểu diễn nhƣ là nút lá trống trong cây phân tích cú pháp. Các nút này đại diện cho chuỗi rỗng và chủ ý của ngƣời lập trình viên là cho ngƣời dùng gán các giá trị hợp lệ cho các nút lá này. Các nút lá chỉ có thể là đại diện cho một nút trong kết quả truy vấn, nó phải là giá trị của một chuỗi và nó phải đƣợc đặt ở vị trí hợp lệ.
Ý tƣởng của thuật toán sử dụng cây phân tích cú pháp truy vấn là phân tích các truy vấn đƣợc tạo ra từ ngƣời sử dụng có tuân theo các cấu trúc cú pháp của câu lệnh truy vấn nhƣ nhà phát triển ứng dụng mong muốn hay không. Do vậy, mục tiêu chính của kỹ thuật này là để xác định xem các đầu vào do ngƣời dùng nhập xem nó có đúng với mong muốn của ngƣời lập trình hay không[8]