Hôm nay tôi viết bài này để chia sẻ về cách dùng sqlmap mức cơ bản những cái cơ bản nhất để bạn có thể sử dụng.

Mặc định khi tấn công injection thì sqlmap sẽ dùng tham số -u và parameter là id nghĩa là victim phải có cấu trúc lỗi dạng domain.com/index.php?id={injection here} dạng như vậy. Nhưng các bạn biết khi tấn công web thì lỗi không chỉ gặp ở GET mà nó còn ở POST nó không chỉ có parameter id bị lỗi mà nó có hàng trăm hàng triệu parameter khác cũng có thể bị lỗi. vậy thì làm sao với sqlmap?

Thực ra vấn đề này rất đơn giản và những nhà phát triển họ cũng tính cả rồi.

  • đối với các lỗi liên quan tới giao thức http là POST thì các bạn lưu http request thành file txt và dùng tham số -r:
    ví dụ: sqlmap -r domain.txt –dbs
  • có một vấn đề khi dùng POST thì mặc định ngần như không ai dùng parameter id cả nên chúng ta phải dùng tham số -p để chỉ rõ là sqlmap sẽ injection vào parameter nếu không nó sẽ báo lỗi không chạy được thành thử ra nó sẽ thành:
    sqlmap -r domain.txt –dbs -p username
    với parameter username là vị trí injection. Điêu này tương tự với tham số -u và GET nếu lỗi không nằm ở parameter id thì các bạn cũng phải dùng -p

Đó là với POST và có parameter để injection vào nhưng trong lập trình thì để tốt cho seo thì lập trình viên thường không dùng parameter quá nhiều trừ khi POST vậy nếu lỗi mà không có parameter đi kèm thì làm sao?

ví dụ: domain/abc{injection here}/acd.html

Các trường hợp này rất hay gặp hoặc như ví dụ sau đây thì làm sao?

Như vậy các bạn có thể thấy đây là những trường hợp khá dị khi nó không lỗi ở các parameter mà nó lỗi ở những chỗ quái dị vậy cách này thì làm như thế nào?

Đối với sqlmap để giải quyết vấn đề thì chúng ta phải dùng tới một tính năng có tên custom injection marker. tính năng này có nghĩa là bạn cần injection vào đâu thì bạn điền dấu * vào đó sqlmap nó sẽ tự tìm và chèn các payload vào đó. trong 2 ví dụ trên thì nó sẽ thành như sau:

sqlmap -u domain/abc*/acd.html –dbs

Đây là một chức năng nâng cao khá là hay để tấn công khi mà nó không có các parameter thích hợp để tấn công.

Lưu ý các bạn có thể dùng custom injection marker (dấu *) để thay cho tham sô -p như:

sqlamp -u domain.com/index.php?df=* –dbs

Tuy nhiên khi dùng như vậy công cụ sẽ chạy lâu hơn rất nhiều so với các bạn dùng -p

Mặc định thì sqlmap nó chỉ chạy từng cái một tets từng payload một và như vậy nó khá lâu nên dể đi nhanh hơn thì các bạn nên dùng thêm các tham số để sqlmap nó chạy nhiều payload cùng lúc hơn với tham số –threads. ví dụ mình muốn chạy 8 cái đồng lúc chả hạn:

sqlamp -u domain.com/index.php?df=* –dbs –threads 8

một điều mặc định nữa của sqlmap là nó chạy với level 1 và risk 1 mức thấp nhất ít payload nhất nên theo kinh nghiệm của mình thì các bạn cứ nên set mặc định nó mức cao nhất luôn là –level 5 –risk 3 như vậy nó sẽ có nhiều kiểu test với các payload khác nhau hơn mình đỡ phải kiểm tra nhiều lần và đôi khi nó không hết level 1 risk 1 chưa chắc nó đã ra nhưng chạy max nó lại ra!

Có một điểm lưu ý là khi chạy sqlmap nó hay hỏi kiểu y/n (yes/no) cái này nếu bạn có thời gian ngồi nhìn nó chạy thì ok còn nếu bạn dùng theo kiểu treo tools thì đó là thảm họa tools sẽ ngừng vậy làm thế nào để giải quyết vấn đề nó hỏi khi đang chạy tools. để giải quyết sự ngu của sqlmap thì chúng ta dùng –batch. với tham số –batch thì nó tự động chạy mà không hỏi bạn yes no gì nữa.

Trên đây là kinh nghiệm dùng sqlmap mức cơ bản của mình chia sẻ cho các bạn hi vọng nó hữu ích.

Leave a Reply

avatar
  Subscribe  
Notify of