gpt4 book ai didi

mysql - 使用十六进制值伪装恶意负载的 SQL 注入(inject)

转载 作者:行者123 更新时间:2023-11-29 21:50:23 24 4
gpt4 key购买 nike

我正在调查 SQL 注入(inject),并且在隐藏十六进制有效负载方面遇到困难,希望有人能提供建议。

例如注入(inject):从用户中选择名称,其中 id= ? --> 这是我想注入(inject)的地方

我想进行这样的查询:(仅作为示例)从用户中选择名称,其中 id= 1 union select 1,2,3

为了隐藏我的有效负载,我想将“1 union select 1,2,3”转换为十六进制,如下所示:从 id=X'3120756E696F6E2073656C65637420313233' 的产品中选择名称;从 id=0x3120756E696F6E2073656C65637420313233 的产品中选择名称;

但是,不知何故,mysql不会将我的十六进制解释为原始字符串,而是将其视为一个数字,这在我看来不符合逻辑。任何人都可以帮我解决这个问题吗?谢谢。

最佳答案

MySQL 将 0x3120...X'3120...' 解释为十六进制文字表达式是完全符合逻辑的情况,并根据上下文解释为数字、字符串或 blob。

解析器在任何情况下都不会模棱两可地解释此类表达式,就像它不会误解这样的内容一样:

WHERE id = '1 UNION ALL SELECT ...'

它明确是一个文字字符串表达式,与提供的两个示例相同。

https://dev.mysql.com/doc/refman/5.6/en/hexadecimal-literals.html

我无意向任何人提供有关如何利用 SQL 注入(inject)漏洞的建议。使用 urlencoding 可以让你传递像 %31%20%75%6E... 这样的东西,这实际上根本不是聪明的利用,只是编码 URL 的不同方式,以便在已经-易受攻击的接口(interface)并且不会用于任何高级目的。要么它是正确编写的,要么如果没有这样的策略它就已经很容易受到攻击,并且这样的编码不会改变这一点,除非在极少数情况下。

关于mysql - 使用十六进制值伪装恶意负载的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33706136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com