Hodei

New Member
mấy anh chị cho em hỏi là em học SQL injection, em có 1 thắc mắt là khi dùng lệnh order by xx với xx là số bất kỳ để kiểm tra CSDL có bao nhiêu cột, nếu order by 14 ( ví dụ thôi) chạy ok mà order by 15 bị lỗi thì ccsdl có 14 côt, order by dùng để sắp xếp, nhưng em chưa hiểu chỗ 14 chạy ok 15 bị lỗi =>có 15 cột

và câu lệnh này unhex(hex(group_concat(id,0x3a,uid,0x3a,pwd))) sao khi thực hiện sẽ cho ra thông tin trong bảng bao gòm user và pass, nhưng cái 0x3a là sao vậy ạ?

em chưa hiểu lắm, công dụng hàm unhex trong câu lệnh trênh và (id,0x3a,uid,0x3a,pwd) có nghĩa là gì?
 

tctuvan

New Member
Bạn để ý 0x3a là hex. Cái hàm hex, unhex chẳng qua để giấu ký tự ":" 0x3a
Bạn bật phpmyadmin lên sẽ thấy SELECT unhex( hex( 0x3a ) ) = ":"
Vì nếu đưa thẳng : lên Url có thể bị phát hiện là sql injection

Còn về cột 14 thì được, 15 thì không vì order by là để sắp xếp các rows theo cột ... Ở đây theo cột 14 thì ok nghĩa là tồn tại cột 14. Còn 15 không tồn tại thì thành lệnh lỗi.
 

Các chủ đề có liên quan khác

Top