SQL Advanced part 7

Chia sẻ: Avsdvvsd Qwdqdad | Ngày: | Loại File: PDF | Số trang:3

0
57
lượt xem
8
download

SQL Advanced part 7

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Phần 2 SQL Advanced (bài 15) Với một số kiến thức cơ bản về SQL ở trên bạn có thể làm gì nào ? Bây giờ ta sẽ thử xét với phương diện của người lập trình web : Tạo 1 database tên hacker với các trường như sau

Chủ đề:
Lưu

Nội dung Text: SQL Advanced part 7

  1. Phần 2 SQL Advanced (bài 15) Với một số kiến thức cơ bản về SQL ở trên bạn có thể làm gì nào ? Bây giờ ta sẽ thử xét với phương diện của người lập trình web : Tạo 1 database tên hacker với các trường như sau : Trích: create database hacker use hacker Create table admin( [id] numeric not null, username nvarchar(10) not null, [password] nvarchar(10) not null, address nvarchar(30), phone numeric(10) ) select * from admin Insert vào một số data : Trích: insert into admin ([id],username,[password],address,phone) values (1,'admin',12345,'Ha Noi',048324245) go insert into admin ([id],username,[password],address,phone) values (2,'Neo',12345,'Ha Noi',048324245) Rồi okie ta thấy table admin như sau : Giờ muốn select những username trong table admin mà có address tại Hà Nội thì câu query sẽ như sau : (tất cả những giá trị là character thì phải được bao trong dấu quote ')
  2. Trích: sername fro admin w select us om where address='Ha Noi i' Vậy nếu ta viết thế này thì sẽ c chuyện g xảy ra nh u có gì hỉ Trích: sername fro admin w select us om where address=''or 1=1- --' Kết quả cũng show ra như trên w n. Như trên ta thấy đá lẽ ra add n áng dress mang giá trị là H Noi nhưn nếu ta th giá trị đó Ha ng hay ó bằng 'or 1=1-- thì dấu quote đằ trước sẽ là 2 dấu '' có nghĩa giá trị trong đó rỗng . V d ằng ẽ Và sau nó là or 1=1 , như ta đã biế or là câu lệnh điều k và ở đâ có nghĩa là hoặc. à n ết kiện ây Mà giá t đằng trướ là rỗng n SQL sẽ chạy tiếp t trị ớc nên ẽ theo gặp điề kiện or th tất nhiên sẽ ều hì n thực thi lệnh này mà or 1=1-- , 1=1 thì luô đúng , còn dấu -- sẽ biến tất cả những thứ m ôn ẽ ả ứ đằng sau thành chú thích (tron SQL quy định sau d -- là câu chú thích). Như vậy c u ú ng y dấu u câu truy vấn hoàn toàn hợp lệ và k có lỗi gì cả và nó sẽ show cho t toàn bộ u n ko ta username củ ủa admin , đến đây chắ bạn đã h rồi chứ ắc hiểu Còn về câu lệnh UNION : U Như đã b câu lện UNION dùng để gộp chuỗi lại với nhau và các giá trị trong 2 ch biết nh à ị huỗi đó phải l tương ứn . là ng Ví dụ : Trích: select us sername fro admin om UNION password] fr select [p rom admin Câu lệnh trên sẽ sho cho ta th các use h ow hấy ername và p password trong table ad dmin. Khi tạo t table bạn để ý thấy use ername ta g thuộc tín là nvarchar , vậy nế khi truy vấn gán nh ếu bằng UNNION , dòn thứ 2 bạn thay [password] thành số bất kì ( dụ 1) th sẽ báo lỗi sau ng n h (ví hì : Câu truy vấn : y
  3. Trích: sername fro admin select us om UNION n select 1 from admin Error : Trích: Syntax e error conver rting the nv varchar valu 'admin' to a column of data typ int. ue o pe Hô hô er báo sai cú pháp ,k thể chuyể từ kiểu d liệu nvar rror i ko ển dữ rchar (chuỗi sang int ( i) (số) được vì dòng thứ 2 ta thay thế giá trị là ki int --> k cùng loạ dữ liệu --- iểu ko ại ->error và s show ra cái tab admin . Còn khi áp dụng trên web thì đây là dấu hiệ cho thấy table admin là ble p y ệu n có tồn tạ . ại Đây chỉ là một số ví dụ để các bạn có thể hiểu về SQ injection ,mong giú được gì đ v c QL n úp đó cho các bạn ! Mà còn cách fix thì sao nhỉ , tr ì rong SQL c một thứ g là trigge có gọi er Hàm này có tính nă tương tự như hàm bắt sự kiện trong Java y ăng ự n aScript , ta s viết 1 hàm để sẽ m bắt nhữn lỗi trên hoặc có thể viết = chín ngôn ngữ lập trình w ng h nh ữ web. Còn cách viết thế nào thì phải nhờ anh Da n arkHawk cá nhẩy --Chuyên gia ái dondoc (vniss)
Đồng bộ tài khoản