首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入- MSSQL

SQL注入- MSSQL
EN

Security用户
提问于 2013-04-02 19:28:06
回答 3查看 632关注 0票数 2

我正在学习SQL注入,并有以下后端代码,

代码语言:javascript
复制
Set rs = server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Registration WHERE name='"&name&"'"
rs.Open SQL,Conn,0,1
if not rs.EOF then
    message = "Your ID is """ & rs("iD") & """."
else
    message = "id does not exist."
end if

我已经能够注入这个来提取一个iD,但是我想知道是否还可以更进一步,获取更多的信息?基于我的代码,我认为这是不可能的,因为我的代码只返回iD DB字段。

我说的对吗?

EN

回答 3

Security用户

发布于 2013-04-03 05:28:37

要利用此漏洞,不需要直接输出。还有一种称为基于布尔盲的技术,其中使用不同布尔表达式的行为来推断来自以下方面的数据:

代码语言:javascript
复制
foo' AND pass LIKE 'a%

如果返回成功消息,则传递以a开头,否则不会。如果在每个成功前缀上递归地重复使用所有可能的字符,则会得到整个字符串。

您也可以这样做,以获取有关数据库架构的信息:

代码语言:javascript
复制
foo' AND EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'abc%') AND '1'='1

有了数据库模式的知识,就可以读取任何数据。

正如Rook已经提到的,SQLmap是一个非常有用的工具,可以自动利用这种SQL注入漏洞。

票数 3
EN

Security用户

发布于 2013-04-02 19:37:38

您可以使用select中的As对记录进行别名,以使任何一列返回。还有一个问题是,如果"name“来自未经验证的用户输入,也可以将任意更改发送到DB。

票数 2
EN

Security用户

发布于 2013-04-02 21:38:15

SQLMap是一个很好的工具,可以自动利用这样的缺陷。SQLMap可以转储整个数据库,即使它是盲目的sql注入。它还可以根据数据库的配置弹出一个shell。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/33637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档