Hibernate SQL注入

我正在审核一个项目,我发现了一种在查询中注入数据的方法。 该项目使用Hibernate和这段代码Session.createSqlQuery() ,然后是.list()

SQL类似于:“ SELECT * FROM tablename ORDER BY column XXXXXX

XXXXXX可以使用Fiddler进行修改。 所以我尝试了

SELECT * FROM tablename ORDER BY column DESC; truncate table tablename;

不幸的是(只为我的注射尝试)它不工作,我得到:

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,在“truncate table tablename”附近使用正确的语法

我的问题是,因为他们正在使用createSQLQuery,他们安全的注入。 如果他们不是,你能举个例子来强调这个问题。

我尝试使用%08(退格字符)思考我将能够删除以前的查询字符为例(它没有工作;))

谢谢。


经过一番研究之后,我似乎无法用这个安全漏洞修改数据,但是使用ORDER BY (CASE WHEN ...)将允许“扫描”表和数据。


是使用参数化语句指定列名还是仅连接文本?

例如:在perl :: DBI中,驱动程序支持以下语法:

$dbh->do("SELECt * FROM asdf ORDER BY ?", undef, $order_by);

这个? 有一种参数化语句的形式可以自动清理输入。

链接地址: http://www.djcxy.com/p/93829.html

上一篇: Hibernate SQL Injection

下一篇: SELECT INTO a table variable in T