Thứ Tư, 9 tháng 10, 2019

[WRITEUP] SQL INJECTION -ROUTED ROOTME

THEO ĐÁNH GIÁ CHỦ QUAN , CHALL NÀY KHÔNG QUÁ KHÓ , NHƯNG MỚI LẠ Ở CÁCH TIẾP CẬN VÀ THỰC THI QUERY
TRONG BÀI NÀY MÌNH SẼ KHÔNG GHI RÕ NHỮNG CÂU QUERY RA , CHỈ SHOW KẾT QUẢ VÀ CÁC BƯỚC CƠ BẢN ĐỂ THỰC THI :D



MỞ ĐẦU CHALL LÀ FORM KHÁ QUEN THUỘC , ĐỪNG AI DẠI DỘT FUZZ VÀO CÁI FORM NÀY NHÉ :D . CHUYỂN QUA TRANG "SEARCH" ĐI !





FUZZ THỬ VÀO FORM NÀY BẰNG HÀNG LOẠT CÂU QUERY QUEN THUỘC THÌ BỊ BÁO "ATTACK DETECTED"!



HIỂN NHIÊN LÀ NÓ ĐÃ BỊ FILTER . NHỮNG TỪ KHÓA QUAN TRỌNG NHƯ "OR" ,"ORDER BY" XUẤT HIỆN SẼ LẬP TỨC BỊ TỪ CHỐI . TUY NHIEN ĐIỀU QUAN TRỌNG LÀ CÂU QUERY "UNION SELECT .. .." KHÔNG BỊ FILTER . KHI THỬ QUERY
' union select 1-->


THÌ NÓ BÁO LỖI CHỨ KHÔNG BÁO "ATTACK DETECTED"



RẤT ĐƯỢC VIỆC . TA DỰA VÀO LỖI BÁO VỀ NHẬN ĐƯỢC NGAY HỆ CSDL LÀ MYSQL . NÓ SẼ GIÚP ÍCH RẤT NHIỀU CHO VIỆC TRUY VẤN . :D

DẠO MỘT VÒNG GOOGLE ĐỂ TÌM HIỂU VỀ ROUTED SQL


THEO MÌNH HIỂU THÌ ĐÂY LÀ DẠNG INJECTON MÀ CÂU QUERY 2 SẼ ĐƯỢC "LỒNG" VÀO CÂU QUERY 1


Routed SQL Injection is becoming increasingly common in practice. You don't notice it when you run a query, but behind the scenes something else happens than normal. The output of the first query, the query that you run, is used as input for the second query. The second query will show the result to you as a user. So there are multiple queries present that need each other to function. .


THỰC HÀNH SẼ RÕ HƠN :D



NẾU NHƯ Ở DẠNG SQL INJECTION "BÌNH THƯỜNG" CÂU QUERY TRÊN SẼ BÁO LỖI VỀ SỐ CỘT. NHƯNG Ở ĐÂY NÓ TRẢ LẠI ĐÚNG GIÁ TRỊ "1" . CHUYỆN GÌ SẼ XẢY RA NẾU TA INPUT VÀO VỊ TRÍ SỐ 1 NÀY 1 CÂU QUERY KHÁC ? . ĐÓ CHÍNH LÀ VẤN ĐỀ MẤU CHỐT CỦA ROUTED SQL INJECTION !

THEO ĐÚNG NHỮNG GÌ SUY LUẬN , MÌNH THỬ QUERY
' union select ' order by 3 -- - -- -


QUERY 2 MÌNH ĐÃ ĐẶT HẲN VÀO QUERY 1 . THỬ NÀO .



FAILED .
MÌNH QUÊN LÀ CHALL CÓ BỘ FILTER CẤM XÀI TỪ KHÓA . MẤT 30 PHÚT ĐỂ MÌNH NHẬN RA VẤN ĐỀ . MÌNH CẦN HEX CÂU QUERY 2 ĐỂ LỒNG VÀO QUERY 1 :D . THỬ LẠI


' union select 0x27206F726465722062792033202D2D202D -- -




BINGO!! VỚI LỖI TRẢ VỀ THÌ TA BIẾT ĐƯỢC SỐ CỘT KHÔNG VƯỢT QUÁ 3 . MÌNH XÁC ĐỊNH ĐƯỢC SỐ CỘT . DĨ NHIÊN LÀ 1 CỘT LOGIN VÀ 1 CỘT LÀ PASSWORD RỒI . THEO "SÁCH GIÁO KHOA" TA SẼ TÌM TÊN BẢNG VỚI CÔNG THỨC


' union select ' union select 1,table_name from information_schema.tables where table_schema = database() -- - -- -
SAU KHI HEX QUERY 2 VÀ LỒNG VÀO QUERY 1 . TA ĐƯỢC KẾT QUẢ MONG ĐỢI :D



TA ĐÃ CÓ ĐƯỢC TÊN BẢNG , VIỆC TIẾP THEO LÀ EXTRACT DỮ LIỆU RA THÔI :D





ĐÃ CÓ TÊN 2 CỘT VÀ TÊN BẢNG , ĐIỀU GÌ ĐẾN SẼ ĐẾN THÔI 😛

QUERY CUỐI CÙNG MANG TÍNH QUYẾT ĐỊNH


' union select ' union select 1,concat(login,password) from users -- - -- -



FLAG ĐÃ PHỌT RA ! MANG ĐI DẬP NƯỚC NÀO 


Happy Hacking!

Phổ Biến