我可以使用SQL注入执行多种查询的Web语言?
我正在做关于网络漏洞的大学工作,我需要在实践中演示其中的一些漏洞,特别是SQL注入漏洞。 我开发了两个应用程序,一个使用PHP,一个使用JSP,但没有一个接受多个查询,我需要从SQL注入脚本执行DROP TABLE
。
所以我已经知道mysql_query()
转义多个查询, Statement.execute()
也可以,但我还没有尝试过使用ASP.NET。 但是,ASP.NET是最简单的查询语法中唯一的Web语言吗? 像mysql_query()
是PHP最简单的语法,而st.execute()
是JSP最简单的语法,这意味着很多Web应用程序都使用这种语法。
JSP
String query = "SELECT * from user; DROP TABLE user;-- ";
st = con.createStatement();
st.execute(query);
PHP
mysql_query("SELECT * from user; DROP TABLE user;-- ");
编辑:我不是很清楚,我正在做一个易受攻击的登录应用程序,我需要用SQL注入来DROP
一个表,就像在查询中一样:
"SELECT * FROM user where user ='".$_POST['user']."' AND pass = md5('".$_POST['pass']."')";
我传入用户字段'; DROP TABLE用户; - ',我的问题是,哪种web语言允许我在不使用诸如mysqli_multi_query()
类的特定函数的情况下执行该操作?
另一种可能性是你可以尝试一些迂回的方式。 例如让PHP调用shellexec()并通过PHP通过MySQL控制台命令行运行所有SQL语句。 鉴于命令行的交互性,我甚至不确定这是可以做到的。
不幸的是,它不会是一种可以说是常用的方式。 似乎所有的意见都表明,这些日子不能直接完成。 至少不是多查询注入限制。 但这并不意味着没有其他可能发生的SQL注入攻击。
我能想到的一件事是使用注释或子查询。 有了评论,你将不得不花费大量的时间来制定一个解决方案,在你的注入SQL的末尾添加一个“ - ”来关闭其余的SQL语句。 如果你的代码在哪里出现任何换行符,这将会产生问题。 但使用子查询似乎更有可能。
对于子查询,您要做的是可能将注入到搜索查询中的值放入WHERE子句中。
例...
从这个查询开始:
SELECT * FROM students WHERE first_name = 'bobby'; -- Bobby being an unsanitized value.
变为:
SELECT * FROM students WHERE first_name = 'bobby' AND (DELETE FROM students WHERE student_id > 0) = true AND '' = '';
在我的第二个例子中我注入了这个:
' AND (DELETE FROM students WHERE student_id > 0) = true AND '' = '
它利用子查询方法来注入一个动作语句。 查看SQL标准页面:http://www.w3resource.com/sql/subqueries/understanding-sql-subqueries.php
这不是任何延伸的语言限制。 任何用于Web的服务器端语言都可以执行多个查询(我一直都在这样做)。 但是你的问题并没有太大的意义。 你想传递一个庞大的SQL文件来做一堆操作吗? 或者你想要做数据/事件特定的操作,比如你的基本CRUD函数(创建,读取,更新,删除)?
所有的语法都会很简单。 但是如果你真的想混淆它来进一步简化它,那么就使用一个ORM,比如Laravel框架附带的Eloquent系统。
虽然老实说,我认为你只需要花一些时间学习SQL和你喜欢的网页语言。 我会这样说,PHP是绝大多数Web开发发生的地方。 它上面有很多资源。
编辑:因为你真的设置为从同一个调用运行多个查询,你可以使用这里描述的函数:http://raamdev.com/2008/multiple-query-problems-with-mysql_query/
又名:mysqli :: multi_query - http://www.php.net/manual/en/mysqli.multi-query.php
奇怪的是,你不能使用DROP TABLE方法注入你自己的易受攻击的代码。
我会尝试使用mysqli函数,包括多查询函数,它应该是mysqli_multi_query()
请注意PHP 5支持mysqli的PHP支持。
编辑:只需阅读您对意识到此功能的意见。 我认为这是最简单的方法。
链接地址: http://www.djcxy.com/p/16805.html上一篇: In which web language can I execute multiple queries with SQL injection?