CTF常用sql注入(一)联合注入和宽字节

CTF常用sql注入(一)联合注入和宽字节0x01 前言
给自己总结一下sql注入的常用姿势吧,记录一下学习
0x02 联合
联合注入的关键词是union SQL的union联合注入原理是联合两个表进行注入攻击&#xff

0x01 前言

个性化常见的SQL注入态度,记录自己的学习。

0x02 联合

联合注入的关键字是union

SQL中联合注入的原理是通过连接两个表进行注入攻击,并使用union select关键字进行连接查询。

那么为什么我们通常只在标题中写一件事呢?

因为

$sql=\’select * from ctfshow_user where pass=\'{$password}\’ and username=\'{$username}\’;\’;

然后,当您关闭上一条语句并运行查询时,它已经是一个表,因此您可以直接连接到它。

用户名=-1\’ 组合选择1,2,3–+pass=1

成为

$sql=\’select * from ctfshow_user where pass=\’1\’ and username=\’-1\’ Union select 1,2,3–+\’;\’;

如果成功,连接两个句子

这个结果也表明,如果列相同,就可以进行进样,并且不需要检查每列的顺序。

像这样编写完整的注入语句很困难,因此我们将使用子查询来连接SQL 语句。

?id=-1\’ Union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=\’ctfshow\’),3–+

我在这里说一点。

0x03 group_concat和concat

最常用的就是group_concat和concat。以下是两者的区别:

组连接

简单来说,这个功能就是用来垂直连接事物的。

+————+————+————+

| 学生证|

+————+————+————+

| 70.5 | 1

| 98.5 |

| 33.0 |

| 98.0 |

| 60.0 |

| 59.5 |

| 33.0 |

| 68.0 | 3

| 99.0 |

| 67.0 |

| 23.0 |

| 56.0 |

| 72.0 |

| 81.0 |

| 37.0 |

| 56.0 |

| 43.0 |

| 79.0 |

| 80.0 |

| 92.0 |

+————+————+————+

20 行组(0.04 秒)

如果您使用group_concat() 函数查询列名称,您将看到Score、student_id 和course_id。

何时使用它?当出现回声时。

子查询返回多行

Concat 进行水平连接,即连接您查询的内容和您连接的符号。

?id=-1\’ Union select 1,concat(0x3d,(select group_concat(column_name) from information_schema.columns where table_name=\’flag\’),0x3d),3–+

0x3d 是“=”,主要用于错误注入。

0x04 宽字节

如何检查我是否有宽字节注入?

这是传输符号\\,它影响\’的终止并影响注入。

此时,php会根据数据库中的编码自动确定要使用的编码。

您可以使用?php $m=\”word\”; 来确定这一点

输出值3表示UTF-8编码,输出值2表示GBK编码。

当MySQL数据库使用宽字节(GBK)编码时,两个字符被视为一个汉字(前面的ASCII码必须大于128才能达到汉字范围)(如%df))。

然后就可以正常解析转义字符并正常关闭SQL语句进行SQL注入了。

如果有转义字符,请考虑宽字节注入。

成功

以上#CTF中常用的SQL注入(一)和宽字节相关内容源网络的信息仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92918.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月4日 下午4:35
下一篇 2024年7月4日 下午4:35

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注