一次实现两个 SQL 注入查询(带和不带单引号)

Achieving Two SQL Injection queries at one time (with and without single quotes)

我目前受困于此 SQL 注入任务。

我应该使以下两个 SQL 查询为真,同时。我也只能输入一个输入,该输入必须适用于以下两个语句。带下划线的部分是我输入的内容。作业托管在接收我的单个用户输入的网络服务器上。

Query 1: SELECT 0x43242a = __;
Query 2: SELECT '0x89222a' = '__';

我尝试过的: 使用 -- 和 ; 的组合评论并尝试创建另一个查询,但无济于事。我进行了探索,这两个语句每次只成功触发其中一个语句,尽管它们看起来应该适用于两个查询。

主要问题是因为第二个查询需要单引号,所以我似乎永远无法满足这两个查询。

我试过三种方案

Input: 0x89222a' OR '1' = '1' OR '1' = '1
Query 1: SELECT 0x43242a = 0x89222a' OR '1' = '1' OR '1' = '1; (false)
Query 2: SELECT '0x89222a' = '0x89222a' OR '1' = '1' OR '1' = '1'; (true)

^ 不知何故,我认为这会巧妙地满足这两个条件。对于第一个,虽然第一次比较失败,但 OR 处理了第二个应该为真的,但它被认为是错误的。然而,第二个说法是正确的。

Input (quotes are part of the input) : ' or 1=1 --; SELECT '1' = '1'
Query 1: SELECT 0x43242a = ' or 1=1 --; SELECT '1' = '1'; (true)
Query 2: SELECT '0x89222a' = '' or 1=1 --; SELECT '1' = '1''; (false)

^ 这使得第一个查询为真,我认为它对第二个查询有效,通过处理第二个查询的单引号,但是不行。

Input: 0x43242a--; SELECT '1' = '1
Query 1: SELECT 0x43242a = 0x43242a--; SELECT '1' = '1; (false)
Query 2: SELECT '0x89222a' = '0x43242a--; SELECT '1' = '1'; (true)

^ 我也尝试了上面的输入,这使得第二个查询为真,但无法使第一个为真。

这是作业网页的截图。我不知道它是 运行 的数据库类型的详细信息......我不确定是否是因为他们如何编码它我无法像它一样完全利用 SQL 注入作品?或者它也可以在这样的网站上使用吗?

Website platform

确切的语法将取决于数据库及其解析方式 - 对我来说感觉就像基于分号似乎拆分语句的 MSSQL。我认为你走在正确的轨道上,但会坚持使用 'OR' 子句 - 数据库将 return 分隔列表中的最后一个查询。在第一种情况下,您遇到了引号解析问题。

您还可以尝试在字符串末尾使用转义字符“\”来转义第二个引号(如果存在)。