博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆叠注入
阅读量:4983 次
发布时间:2019-06-12

本文共 806 字,大约阅读时间需要 2 分钟。

什么是堆叠注入?

顾名思义,堆叠注入就是将一堆sql语句叠加在一起执行,使用分号结束上一个语句再叠加其他语句一起执行。

题目

1417438-20190828203149700-509602448.jpg

首先尝试闭合引号,并注释后面的内容。

1417438-20190828203158119-1882144614.jpg
发现没有报错,那就判断一下有多少列。

1417438-20190828203205155-712309812.jpg

1417438-20190828203208469-876192790.jpg
由此可以判断出有两列,接着判断回显位。

1417438-20190828203212932-610868824.jpg

发现回显了过滤规则,select是被过滤的,还有一些注入常用语句也被过滤了。

这时就可以尝试一下堆叠注入。

1417438-20190828203216627-2064840038.jpg
发现这里爆出了所有数据库,再来看看数据表。
1417438-20190828203247445-874600076.jpg
发现有两个数据表,通过查看表结构看一下哪个表里面有flag字段。
1417438-20190828203252308-1915690827.jpg
1417438-20190828203257420-1125158053.jpg

发现flag字段在1919810931114514表中,接着想办法去读取这个表中的flag字段的值(因为一些常用语句都被过滤了,不能直接查询)。

这里实在不知道怎么办了,于是百度发现大佬的wp用预处理语句绕过了过滤。

预处理语句使用方式:

SET @sql = variable;  //设置变量PREPARE yuchuli from '[my sql sequece]';   //预定义SQL语句EXECUTE yuchuli;  //执行预定义SQL语句sqla

这里是将我们要处理的语句先与定义为yuchuli,再进行执行,绕过关键字的过滤,于是就有了如下的语句。

PREPARE yuchuli from 'select * from `1919810931114514`';EXECUTE yuchuli;

但是这里的select是被过滤的,于是想到可以对他进行编码绕过.

SET @sql = concat(char(115,101,108,101,99,116), " * from `1919810931114514`");PREPARE yuchuli from @sql;EXECUTE yuchuli;

1417438-20190828203309368-1493654539.jpg

成功拿到了flag。

转载于:https://www.cnblogs.com/Timesi/p/11426348.html

你可能感兴趣的文章
省市联级(DataReader绑定)
查看>>
20165219 课上内容补做
查看>>
Tomcat7.0与Oracle10数据库连接池配置
查看>>
解决webpack和gulp打包js时ES6转译ES5时Object.assign()方法没转译成功的问题
查看>>
字节流与字符流的区别详解(转)
查看>>
类操作数据库
查看>>
找球号(一)
查看>>
oracle ebs 笔记
查看>>
Android studio使用git-android学习之旅(79)
查看>>
eclipse中去掉Js/javsscript报错信息
查看>>
网络中,FIFO、LRU、OPT这三种置换算法的缺页次数
查看>>
随机森林算法参数调优
查看>>
read命令读取用户输入
查看>>
Mysql编写定时任务事件
查看>>
路由器/交换机/集线器的区别收集(转)
查看>>
今日头条面试题汇总
查看>>
hdu 1305 Immediate Decodability
查看>>
基本数据类型
查看>>
laravel 配置sql日志
查看>>
基于注意力机制的群组推荐算法
查看>>