Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Quản trị mạng Ứng dụng truyền thông & an toàn thông tin...

Tài liệu Ứng dụng truyền thông & an toàn thông tin

.PDF
37
598
145

Mô tả:

Ứng dụng Truyền thông & An toàn Thông tin Nội dung ● Giới thiệu ● Cấu trúc máy tính ● Hợp ngữ ● Tràn bộ đệm ● Chuỗi định dạng ● Dư một ● Điều kiện đua ● Tràn số nguyên Nội dung ● Ứng dụng web và các công nghệ an ninh web ● Chèn SQL ● Kịch bản chéo trang ● Giả yêu cầu chéo trang ● An toàn thông tin ● Các thuật toán mật mã ● Áp dụng hệ thống mật mã Giới thiệu ● ● ● ● Giảng viên: Nguyễn Thành Nam (namnt@), trợ giảng: Nguyễn Duy (duyn@) Thang điểm (trên 100): ● 30 điểm bài tập ● 30 điểm kiểm tra giữa kỳ ● 40 điểm kiểm tra cuối kỳ ● 10 điểm cộng (tổng không quá 100) Miễn thi với sinh viên xuất sắc Tài liệu: Nghệ Thuật Tận Dụng Lỗi Phần Mềm, và The Web Application Hacker's Handbook Giới thiệu ● 3 bài tập về nhà ● Bài tập sẽ được chấm lại khi sinh viên yêu cầu ● Nộp trễ sẽ không có điểm ● Gian lận sẽ không có điểm, không nhắc nhở ● ● ● Kiểm tra giữa kỳ sẽ kiểm tra những gì đã học cho đến thời điểm đó Kiểm tra cuối kỳ sẽ kiểm tra toàn bộ kiến thức của môn học Kiểm tra trắc nghiệm và trả lời ngắn Cấu trúc máy tính ● Bộ nhập chuẩn (stdin, bàn phím) ● Bộ xuất chuẩn (stdout, màn hình) ● Bộ xử lý ● ● ● Chương trình chứa các lệnh được bộ xử lý thực thi, dữ liệu được truyền qua bộ nhập, và hiển thị ở bộ xuất Để tận dụng lỗi ta cần phải biết cách hoạt động của bộ xử lý Chúng ta chỉ xét cấu trúc Intel x86 Cấu trúc máy tính ● ● ● ● CPU đọc lệnh từ bộ nhớ Con trỏ lệnh (Instruction Pointer) trỏ đến địa chỉ của lệnh sẽ được thực hiện kế tiếp Trong quá trình thực hiện lệnh hiện tại, con trỏ lệnh sẽ được cập nhật với giá trị của địa chỉ lệnh kế tiếp Mỗi lệnh có độ dài khác nhau (tối đa 15 byte), ví dụ: XOR EAX, EAX dài 2 byte (31 C0), NOP dài 1 byte (90) Cấu trúc máy tính Cấu trúc máy tính Cấu trúc máy tính Cấu trúc máy tính ● Ví dụ tại ô nhớ có địa chỉ 12345678 là các byte 31 C0 90 90, và EIP đang có giá trị 12345678 ● ● Lệnh sẽ được thực hiện kế tiếp là XOR EAX, EAX Trong khi thực hiện lệnh này, EIP sẽ có giá trị 1234567A ● Thực hiện xong lệnh thì EIP vẫn giữ giá trị này ● Lệnh thứ hai được thực hiện là NOP ● ● Trong khi thực hiện lệnh NOP, EIP sẽ có giá trị 1234567B Thực hiện xong lệnh thì EIP vẫn giữ giá trị này Cấu trúc máy tính ● ● ● Thanh ghi là một dạng bộ nhớ rất nhanh Được làm ngay bên trong bộ xử lý, hoạt động với cùng xung bộ nhớ Có ít thanh ghi, chia làm các nhóm ● Thanh ghi chung (EAX, EBX, ECX, EDX) ● Thanh ghi xử lý chuỗi (ESI, EDI) ● Thanh ghi ngăn xếp (ESP, EBP) ● Thanh ghi đặc biệt (EIP, EFLAGS) ● Thanh ghi phân vùng (SS, DS, CS, ...) Cấu trúc máy tính ● ● ● ● ● Thanh ghi chung được xử dụng như bộ nhớ siêu tốc dùng trong tính toán, biến tạm Thanh ghi xử lý chuỗi chuyên dùng trong các tác vụ liên quan chuỗi Thanh ghi ngăn xếp được sử dụng trong quản lý cấu trúc ngăn xếp Thanh ghi EIP là con trỏ lệnh, EFLAGS chứa cờ, hiệu ứng phụ của các lệnh Thanh ghi phân vùng dùng để định địa chỉ Cấu trúc máy tính ● ● Để truy xuất bộ nhớ, hệ điều hành dùng địa chỉ tuyến tính (linear address) Ô nhớ đầu tiên có địa chỉ 0, ô nhớ kế có địa chỉ 1, … Mỗi ô nhớ chứa 1 byte ● Kiến trúc 32 bit có thể định địa chỉ cho 4GB ● Địa chỉ có thể được chứa gọn trong 1 thanh ghi ● Địa chỉ tuyến tính được ánh xạ vào địa chỉ vật lý thông qua bộ quản lý bộ nhớ ảo Cấu trúc máy tính ● Đường truyền dữ liệu rộng 32 bit ● Mỗi lần truy xuất sử dụng cả 32 bit ● Làm sao để truy xuất 1 byte? ● ● Đọc cả 32 bit ● Chỉ xử lý 1 byte Lấy 8 bit nào trong 32 bit? ● Tính kết thúc nhỏ (little endian) ● Lấy 8 bit ở địa chỉ thấp hơn Cấu trúc máy tính Cấu trúc máy tính Cấu trúc máy tính ● ● ● ● Ngăn xếp là cấu trúc vùng nhớ đặc biệt, dạng Vào Sau Ra Trước (LIFO) Chứa biến cục bộ, và quá trình gọi hàm, thực thi của chương trình Hai thanh ghi ESP và EBP chủ yếu dùng để quản lý ngăn xếp ESP chỉ đến đỉnh ngăn xếp nên gọi là con trỏ ngăn xếp (stack pointer) Cấu trúc máy tính ● Ngăn xếp có hai thao tác chính ● PUSH (đưa) vào ngăn xếp ● ● ● ESP giảm 4 ● 4 byte được đưa vào địa chỉ do ESP chỉ đến POP (lấy) từ ngăn xếp ● 4 byte từ địa chỉ do ESP chỉ đến được chép ra ● ESP tăng 4 Đỉnh ngăn xếp có địa chỉ thấp nhất ● Ngăn xếp phát triển về bên dưới (grow down) Cấu trúc máy tính Cấu trúc máy tính Hợp ngữ ● Điều khiển CPU qua mã máy 31 C0, 90 ● Các lệnh CPU hiểu được gọi là tập lệnh ● Để dễ hiểu hơn người ta tạo ra hợp ngữ ● Hợp ngữ là thế hệ thứ 2 ● 31 C0 – XOR EAX, EAX; 90 – NOP ● C, Pascal thế hệ thứ 3 Hợp ngữ ● Cú pháp gồm 2 phần: mã lệnh, và đối số ● Có thể có 0, 1, 2 hoặc 3 đối số ● Chúng ta xem xét cú pháp kiểu Intel ● Ví dụ: ● ● ● ● ADD DEC RET IMUL EAX, 0x10 EBX EAX, EBX, 9 Hợp ngữ ● ● ● ● Các đối số (hay toán hạng) có thể là: ● Thanh ghi ● Bộ nhớ ● Hằng số Kiểu thanh ghi như EAX, BX, CL để sử dụng giá trị của thanh ghi Kiểu bộ nhớ [0x1234] để chỉ đến ô nhớ có địa chỉ 0x1234, hay [EAX] ô nhớ có địa chỉ từ EAX Kiểu hằng số như 0x1234 Hợp ngữ ● Nhóm lệnh truyền dữ liệu ● Nhóm lệnh luận lý ● Nhóm lệnh số học ● Nhóm lệnh so sánh ● Nhóm lệnh nhảy ● Nhóm lệnh ngăn xếp ● Nhóm lệnh hàm Hợp ngữ ● MOV dst, src ● Chép dữ liệu từ src vào dst ● Ví dụ – – – ● MOV EAX, 1 ; (EAX = 1) MOV EAX, EBX ; (EAX = EBX) MOV [EAX], EBX ; (*EAX = EBX) LEA dst, src ● Tải địa chỉ src vào dst ● Ví dụ – LEA EAX, [EBP - 0x08] ; (EAX = EBP - 0x08) Hợp ngữ ● XOR dst, src ● AND dst, src ● OR dst, src ● NOT dst ● NEG dst ● Thực hiện toán tử luận lý tương ứng giữa dst và src, và chứa kết quả trong dst. Hợp ngữ ● ADD dst, src ● SUB dst, src ● INC dst ● DEC dst ● Thực hiện các phép tính số học giữa dst và src, và chứa kết quả trong dst. ● INC cộng dst thêm 1 ● DEC giảm dst bớt 1 Hợp ngữ ● CMP dst, src ● ● TEST dst, src ● ● ● Thực hiện phép toán trừ số học dst - src. Không chứa kết quả Thực hiện phép luận lý dst AND src. Không chứa kết quả Sau khi thực hiện lệnh, các cờ trong thanh ghi EFLAGS có thể bị thay đổi. Ví dụ: ● TEST EAX, 1 ; (cờ Z sẽ bật nếu EAX AND 1 = 0) Hợp ngữ ● JMP dst ● Gán giá trị dst vào EIP (chuyển con trỏ lệnh đến địa chỉ dst) ● JZ/JE dst ● JNZ/JNE dst ● JA/JNBE dst ● JAE/JNB dst ● JG/JGE/JL/JLE/JNG/JNGE/JNL/JNLE... ● Gán giá trị EIP nếu cờ tương ứng được bật Hợp ngữ ● Ví dụ: ● JNZ 0x1234 – ● JZ 0x1234 – ● Nhảy đến 0x1234 nếu cờ Z bật (cờ Z là 1) CMP EAX, EBX JE 0x5678 – ● Nhảy đến 0x1234 nếu cờ Z không bật (cờ Z là 0) Nhảy đến 0x5678 nếu cờ Z bật (EAX = EBX) TEST EAX, 1 JNE 0x5678 – Nhảy đến 0x5678 nếu cờ Z không bật (EAX and 1 = 1) Hợp ngữ ● LOOP dst ● LOOPE dst ● LOOPNE dst ● ● Trừ ECX một đơn vị, nếu ECX khác không thì nhảy đến địa chỉ dst nếu thỏa điều kiện Ví dụ: (cộng (2 + 1) vào EAX) ● MOV 123: ADD LOOP ECX, 2 EAX, ECX 123 Hợp ngữ ● PUSH src ● Đưa src vào đỉnh ngăn xếp ● Hai tác vụ: – – ● ESP = ESP – 4 MOV [ESP], src POP dst ● Lấy giá trị từ đỉnh ngăn xếp vào dst ● Hai tác vụ: – – MOV dst, [ESP] ESP = ESP + 4 Hợp ngữ ● CALL dst ● Đưa giá trị EIP kế vào đỉnh ngăn xếp ● Gán EIP giá trị dst ● Hai tác vụ: – – ● PUSH next_EIP JMP dst Ví dụ: – – – – EIP đang có giá trị 0804844E ESP đang chỉ đến ô nhớ chứa 80 85 04 08 Lệnh CALL dài 5 byte CALL 0xB7EF22F0 Hợp ngữ Hợp ngữ ● RET ● Lấy giá trị từ đỉnh ngăn xếp ● Nhảy đến giá trị này ● Hai tác vụ: – – ● POP tmp JMP tmp Ví dụ: – – – EIP đang có giá trị B7EF2328 ESP đang chỉ đến ô nhớ chứa 53 84 04 08 RET Hợp ngữ
- Xem thêm -

Tài liệu liên quan