1、
postgresql支持堆叠查询,所以可以加入分号之后执行下一条语句,所以在注入的时候可以用
select * from a where b='注入点';select pg_sleep(10);--
这样会有10秒的延迟,可以利用这点去盲注PostgreSQL
2、
php pdo 支持exec()、query()、execute()执行函数。
其中exec可执行多条语句并返回影响行数;
query只能执行一条语句并返回结果集,使用遍历读取结果集内容;
$res=$dbo->query($sql);
foreach($res as $a){
var_dump($a);
}
如果插入多条语句,在general-log日志中会出现如下报错:
<2018-09-19 14:06:33 CST><[未知]>错误: 无法插入多条命令到一个准备好的语句中
<2018-09-19 14:06:33 CST><[未知]>语句: select * from tb;select version();
3、
数据库general-log日志:
数据库日志
general-log是记录所有的操作日志,不过他会耗费数据库5%-10%的性能,所以一般没什么特别需要,大多数情况是不开的,当sql审计和代码审计等,就可以打开来使用了 ,方便查看日志,寻找注入点和出错信息。
Mysql通过命令行的方式打开general log:
set global general_log_file='';
set global general_log=on;
Postgresql 通过编辑配置文件打开general log:
编辑:postgresql.conf
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'