Làm thế nào để làm sập máy chủ Firebird
Đôi khi cần phải làm sập engine máy chủ Firebird, để tạo file dump hoặc kiểm tra độ tin cậy của sơ đồ sao lưu/sao chép của bạn, hoặc cho mục đích gỡ lỗi.
Để kích hoạt sự cố trên Windows, bạn có thể sử dụng UDF sau: badudf.dll.7z
Tải về, đặt vào thư mục UDF, và tạo file .bat với nội dung sau:
@echo off
setlocal enabledelayedexpansion enableextensions
set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey
del 2>nul
echo create database 'localhost:!dbnm!' user '!usr!' password '!psw!'; | "!fbc!\isql.exe" -q -z
(
echo set echo on;
echo declare external function crashme
echo returns int by value
echo entry_point 'crashme' module_name 'badudf';
echo commit;
echo show function;
echo select crashme(^) from rdb$database;
) > %~dp0tmptest.sql.tmp
"!fbc!\isql.exe" ^
localhost:!dbnm! ^
-q -i %~dp0tmptest.sql.tmp ^
-user !usr! -pas !psw!
del !dbnm!
del %~dp0tmptest.sql.tmp
Trong script, gán cho biến môi trường fbc đường dẫn đến thư mục Firebird, ví dụ
c:\Firebird25.in hoặc C:\Firebird30
và tên đăng nhập cùng mật khẩu superuser thực tế của bạn (SYSDBA/masterkey là mặc định) cho các biến usr và psw.
Script sẽ tạo cơ sở dữ liệu tạm thời, đăng ký UDF trong đó và thực thi “truy vấn sát thủ”, sau đó xóa cơ sở dữ liệu.
Kết quả sẽ là Firebird bị sập và nếu bạn đã cấu hình Windows Error Reporting đúng cách, sẽ có dump của tiến trình firebird.exe.
Vui lòng không đăng ký BadUDF.dll trong cơ sở dữ liệu sản xuất!
Ngoài ra, hãy xóa nó khỏi thư mục UDF sau khi thử nghiệm.