我可以使用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?

下一篇: Deny user mysql inject