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