By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
FantasistaFantasista
  • Home
  • Network
  • System
  • Software
  • Security
    SecurityShow More
    Hướng dẫn chung về Kali Linux
    27/05/2022
    Ransomware tấn công có chủ đích vào các tổ chức
    03/11/2021
    Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
    04/10/2021
    Series Pentesterlab – Day 21: From SQL Injection to Shell
    15/09/2021
    Series Tryhackme – Day 01: Starting Out In Cyber Sec
    13/09/2021
  • Coding
  • Life
Search
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Reading: Series Pentesterlab – Day 12: SQL Injection
Share
Sign In
Notification Show More
Latest News
Hướng dẫn chung về Kali Linux
27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
04/10/2021
Series Pentesterlab – Day 21: From SQL Injection to Shell
15/09/2021
Aa
FantasistaFantasista
Aa
Search
Have an existing account? Sign In
Follow US
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Fantasista > Blog > Fantasista > Bảo mật > Pentest > Series Pentesterlab – Day 12: SQL Injection
Bảo mậtPentest

Series Pentesterlab – Day 12: SQL Injection

Fantasista
Fantasista 04/09/2021
Updated 2021/09/04 at 1:03 Sáng
Share
8 Min Read
SHARE
Mục lục
SQL Injection 01 – 02SQL Injection 03SQL Injection 04SQL Injection 05SQL Injection 06

SQL injection là một trong những lỗ hổng (web) phổ biến nhất. Tất cả các bài tập SQL injection, được tìm thấy ở đây, sử dụng MySQL cho back-end. Việc đưa vào SQL xuất phát từ việc thiếu mã hóa / thoát đầu vào do người dùng kiểm soát khi được đưa vào các truy vấn SQL.

Tùy thuộc vào cách thông tin được thêm vào truy vấn, bạn sẽ cần những thứ khác nhau để phá vỡ cú pháp. Có ba cách khác nhau để lặp lại thông tin trong một câu lệnh SQL:

  • Sử dụng dấu ngoặc kép: ‘xxx’ hoặc “xxx”
  • Sử dụng back-tick `.
  • Trực tiếp.

Cách thông tin được phản hồi trở lại và thậm chí cả dấu phân tách được sử dụng sẽ quyết định kỹ thuật phát hiện được sử dụng. Tuy nhiên, bạn không có thông tin này, và bạn sẽ cần cố gắng đoán nó. Bạn sẽ cần phải hình thành các giả thuyết và cố gắng xác minh chúng. Đó là lý do tại sao dành thời gian xem xét những ví dụ này là rất quan trọng.

Pasted - Series Pentesterlab – Day 12: SQL Injection

Pasted 4 - Series Pentesterlab – Day 12: SQL Injection

Trong thử thách này, bạn sẽ cần bypass trang đăng nhập bằng cách sử dụng SQL injection. Truy vấn SQL trông giống như sau:

1
SELECT * FROM user WHERE login='[USER]' and password='[PASSWORD]';

Trong đó: [USER] và [PASSWORD] là các giá trị bạn đã gửi.

Logic đằng sau xác thực là:

  • Nếu truy vấn trả về ít nhất một kết quả, bạn đang ở trong
  • Nếu truy vấn không trả về kết quả, bạn chưa cung cấp tên người dùng và mật khẩu hợp lệ.

Mục tiêu của chúng tôi là làm cho truy vấn trả về ít nhất một kết quả. Để làm như vậy, chúng ta sẽ đưa ra một điều kiện luôn đúng: 1 = 1. Để làm điều đó, chúng tôi sẽ:

  • Ngắt ra bên ngoài dấu nháy đơn để có thể đưa vào SQL bằng cách sử dụng một dấu nháy đơn.
  • Thêm từ khóa OR để đảm bảo so sánh luôn đúng.
  • Thêm so sánh luôn đúng: 1 = 1
  • Comment truy vấn còn lại bằng cách sử dụng – (khoảng trống ở cuối quan trọng) hoặc #.

Nếu chúng ta kết hợp mọi thứ lại với nhau, chúng ta sẽ có được payload của mình.

SQL Injection 01 – 02

Tại 2 phần 01 và 02, chúng ta sẽ thử các cách sau:

1
2
3
4
5
6
7
8
Sử dụng dấu ':
admin' or 1=1 --'
admin' or '1'='1
admin' or '1'='1 --
Hoặc sử dụng dấu ":
admin" or 1=1 --"
admin" or "1"="1
admin" or "1"="1 --

SQL Injection 03

Trong bài tập này, nhà phát triển đã kiểm tra xem chỉ có một kết quả được cơ sở dữ liệu trả về. Bạn có thể bỏ qua kiểm tra này bằng cách sử dụng từ khóa LIMIT.

1
2
3
admin' or '1'='1 LIMIT
 
admin' or '1'='1 LIMIT--

SQL Injection 04

Trong ví dụ này, thông báo lỗi loại bỏ sự bảo vệ do nhà phát triển tạo ra: NO SPACE. Thông báo lỗi này xuất hiện ngay sau khi một khoảng trống được đưa vào bên trong yêu cầu. Nó ngăn chúng tôi sử dụng phương thức ‘hoặc’ 1 ‘=’ 1 hoặc bất kỳ admin’or ‘1’=’1 nào sử dụng ký tự khoảng trắng. Tuy nhiên, quá trình lọc này dễ dàng bị bỏ qua, sử dụng tabulation (HT hoặc \t). Bạn sẽ cần sử dụng mã hóa, để sử dụng nó bên trong yêu cầu HTTP. Sử dụng cách bypass đơn giản này, bạn sẽ có thể biết cách phát hiện lỗ hổng này.

Nếu chúng ta dùng bất cứ SQL Injection nào ở trên thì sẽ bị app chuyển đổi thành space (+). Do đúng chúng ta cần thay + trong payload bằng HT (%09) trên công cụ Burp Suite:

Pasted 5 - Series Pentesterlab – Day 12: SQL Injection

SQL Injection 05

Trong ví dụ này, nhà phát triển chặn SPACE và tabulation. Có một cách để bỏ qua bộ lọc này. Bạn có thể:

  • Bạn không cần khoảng trắng giữa các từ khóa trong nội dung của mình.
  • Bạn có thể sử dụng # thay vì – (nếu cần).
  • Thay OR bằng ||

Bằng cách áp dụng các thủ thuật này, bạn sẽ có thể khai thác lỗ hổng này.

1
admin'||1=1#'

SQL Injection 06

Ví dụ này được xuất bản lần đầu tiên vào năm 2006 trên Blog của Chris Shiflett như một cách để bỏ qua dấu gạch ngang. Nó dựa trên cách MySQL sẽ thực hiện thoát. Nó sẽ phụ thuộc vào bộ ký tự được kết nối sử dụng. Nếu trình điều khiển cơ sở dữ liệu không biết về bộ ký tự được sử dụng, nó sẽ không thực hiện đúng việc thoát và tạo ra một tình huống có thể khai thác được. Khai thác này dựa trên việc sử dụng GBK. GBK là một bộ ký tự cho tiếng Chinese giản thể. Sử dụng thực tế là trình điều khiển cơ sở dữ liệu và cơ sở dữ liệu không “nói chuyện” với cùng một bộ ký tự, có thể tạo một dấu ngoặc kép và thoát ra khỏi cú pháp SQL để đưa vào một trọng tải.

Sử dụng chuỗi \xBF’ (URL-encoded as %bf%27), có thể nhận được một single quote sẽ không được thoát đúng cách. Do đó, có thể đưa điều kiện luôn đúng bằng %bf%27 or 1=1 --  và bỏ qua xác thực.

Lưu ý thêm, vấn đề này có thể được khắc phục bằng cách thiết lập mã hóa kết nối thành ‘GBK’ thay vì sử dụng truy vấn SQL (là nguồn gốc của vấn đề này). Đây là vấn đề xuất phát từ việc thực thi truy vấn sau:

1
SET CHARACTER SET 'GBK';

Đó là một vấn đề khá khó xảy ra đối với một ứng dụng web nhưng luôn tốt khi biết rằng nó tồn tại, đặc biệt nếu bạn chơi CTF.

Ở bài toán này cần chú ý thay đổi payload trong Burp như sau (chú ý phải đúng tuyệt đối từng ký tự):

1
username=admin%bf%27+or+1=1+--+&password=admin

Pasted 6 - Series Pentesterlab – Day 12: SQL Injection

You Might Also Like

Hướng dẫn chung về Kali Linux

Ransomware tấn công có chủ đích vào các tổ chức

Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Series Pentesterlab – Day 21: From SQL Injection to Shell

Series Tryhackme – Day 01: Starting Out In Cyber Sec

TAGGED: pentest, pentesterlab

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Fantasista 04/09/2021
Share this Article
Facebook TwitterEmail Copy Link Print
Share
Posted by Fantasista
Follow:
Xin chào, mình là Tân. Mình tạo blog này 01/06/2021. Đây là nơi mình ghi chép lại những suy nghĩ, cảm nhận trong cuộc sống và những kiến thức mà mình học được.
Previous Article Series Pentesterlab – Day 11: Open Redirect
Next Article Series Pentesterlab – Day 13: Server Side Request Forgery
Leave a comment Leave a comment

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Stay Connected

235.3k Followers Like
69.1k Followers Follow
11.6k Followers Pin
56.4k Followers Follow
136k Subscribers Subscribe
4.4k Followers Follow
- Advertisement -
Ad imageAd image

Latest News

Hướng dẫn chung về Kali Linux
Bảo mật Công cụ bảo mật 27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
An toàn thông tin Bảo mật 03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
Phần mềm Tiện ích 10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
Bảo mật Pentest 04/10/2021
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg
@envato
1.5k Following
71k Followers
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 39 phút ago
@reputeinfosys Hi there, can you provide us with the ticket number to your request and we will make sure someone ge… https://t.co/TPdKynvll8
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 52 phút ago
@joeyancey_ Hi there, we would be more than willing to review this case for you. Please submit a support ticket her… https://t.co/V7jXIg1G3q
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 9 giờ ago
@barts_ron Hi! Thanks for contacting us. It looks like all our systems are running smoothly. You can check the stat… https://t.co/Haz9yXFnMM

You Might also Like

Hướng dẫn chung về Kali Linux

27/05/2022
An toàn thông tinBảo mật

Ransomware tấn công có chủ đích vào các tổ chức

03/11/2021
Bảo mậtPentest

Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

04/10/2021
Bảo mậtPentest

Series Pentesterlab – Day 21: From SQL Injection to Shell

15/09/2021
//

We influence 20 million users and is the number one business and technology news network on the planet

Quick Link

  • About
  • Contact
  • FAQs

Top Categories

  • Home
  • Network
  • System
  • Software
  • Security
  • Coding
  • Life
FantasistaFantasista
Follow US

© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.

Join Us!

Subscribe to our newsletter and never miss our latest news, podcasts etc..

Zero spam, Unsubscribe at any time.

Removed from reading list

Undo
Welcome Back!

Sign in to your account

Register Lost your password?