RingZer0 SqlInjection Writeup
Lang thang trên mấy diễn đàn tình cờ biết được trang này là nơi để training về các vấn đề tấn công và bảo mật.Các bài tập ở đây đều không có lời giải mà người chơi phải tự mày mò để làm được,chỉ có đề bài và cũng không có hướng dẫn nào cả @@. Sau vài ngày lần mò trong category SqlInjection mình ...
Lang thang trên mấy diễn đàn tình cờ biết được trang này là nơi để training về các vấn đề tấn công và bảo mật.Các bài tập ở đây đều không có lời giải mà người chơi phải tự mày mò để làm được,chỉ có đề bài và cũng không có hướng dẫn nào cả @@. Sau vài ngày lần mò trong category SqlInjection mình cũng đã kiếm được vài chục Point của page.Xin Writeup lại 1 số hi vọng có ích cho ace có cùng sở thích.Nếu ace nào muốn tự tìm flag thì click vào challenge name để tới challenge page.
Lập tài khoản tại đây và chọn mục SqlInjection. List các Challenge sẽ hiển thị ra, chọn và bắt đầu thôi.
Most basic SQLi pattern.
đề bài là 1 form login và kèm theo description Most Basic ,vậy chắc đây là kiểu sqlInjection đơn giản nhất rồi.Thử vào
Username: 1' or 1=1 Password: 1' or 1=1
lỗi trả về
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' AND password = '1' or 1=1' at line 1
như vậy trong sql command chắc có dạng:
SELECT xx FROM table Where username='$user' AND password='$password';
sửa lại cho đúng syntax
Username: 1' or '1=1 Password: 1' or '1=1
bingo! ta đã qua được challenge đầu tiên.
ACL rulezzz the world.
đề bài là 1 combobox thử chọn option và page chạy 1 cách bình thưởng.Thử view source của page. như vậy các value của Option đang được để cố định thử sửa lại value admin thành admin' này và Post lên server nhận về error.
username=admin' --> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin'' at line 4
như vậy sql trên server có dạng
SELECT * From Table_Name Where username='$userName'
như Challenge 1 nhưng đây là kiểu Post param qua dialog box.Mở web Inspection và chỉnh lại admin thành admin' OR 1='1 Post lên server và ta lấy được flag.
Login portal 1.
Đề bài lại là 1 form login.Quen thói cũ ta thử như Challenge 1 thôi. Nhận lại
Illegal characters detected.
Như vậy lần này mấy anh lập trình phía server đã thông minh hơn có check các ký tự không hợp lệ từ phía client.Sau một hồi search google ,có rất nhiều nguồn cho thấy việc check ký tự đề ngăn chặn sqlinjection phía server là không hiệu quả.Ta hoàn toàn có thể sử dụng các câu lệnh chỉ mang toàn ký tự để khai thác lỗi này.Cơ bản nhất thay vì sử dụng dấu '=' (mà server cho là Illegal character) thì ta sử dụng so sánh
username: admin' or '2' > '1 password: admin' or '2' > '1
quả nhiên là phép so sánh không bị chặn Illegal và ta lấy được Flag cần