论坛: 编程破解 标题: 数据库用户名和密码检测的问题 复制本贴地址    
作者: ljsh012 [ljsh012]    论坛用户   登录
sqlstr="select * from user where username='"&username&"' and password='"&password&"'"
这个语句中的'"&username&"',其中最外面的''是数据库检索用户名的格式,是不是因为数据库中
的用户名和密码是字符串形式。所以要用''包括起来?而&符号为连接符。为什么要用""把&username&括起来呢?不能直接用"username"吗?不懂。难道是表单中的数据都得用""包括起来。那为何又要一个连接符&.这几个符号真是让人越想越糊涂。
象这种msgbox("你好"&chr(10)&"你好")中的符号就非常让人好懂了。
知者赐教。不甚感激。
俄,是不是这样来理解:sqlstr="select * from user where username='"|&username&|"' and password='"|&password&|"'"  其中|为理解程序的分隔符。是不是?谢谢。

地主 发表时间: 04-09-07 22:59

回复: ljsh012 [ljsh012]   论坛用户   登录
赫赫,就是最后一种理解方法了。因为符合了一切这种形式的语句。能够讲的通了。

B1层 发表时间: 04-09-07 23:14

回复: TomyChen [quest]   版主   登录
不太懂ASP,但我记得&在这里好像是字符串链接的意思就是把"和username连起来

B2层 发表时间: 04-09-07 23:45

回复: 286 [unique]   版主   登录
1 sql命令中,字符串要用''括起来。
sqlstr="select * from user where username='unique' and password='12345'"
这个能看懂吧?
sqlstr="select * from user where username=unique and password=12345"
是不对的。

2 把&换成+,这样成了。
sqlstr="select * from user where username='"+username+"' and password='"+password+"'"
能看懂吧?
&在这里就是+的意思。


B3层 发表时间: 04-09-08 09:40

回复: windflower [windflower]   论坛用户   登录
sqlstr="select * from user where username='"&username&"' and password='"&password&"'"
&只是字符串连接运算符。
"select * from user where username='" 连接 "username " 连接 " ' and password='" 连接
"password" 连接 " '"
当把两个以上的字符串连接时就用&,当然 &操作符两边必然是字符串,字符串要用左右两个双引号括起来这你知道。

B4层 发表时间: 04-09-08 12:25

回复: qiezic [qiezic]      登录
好象+是连接同类型的变量!
而&则可以把不同类型的变量连接在一起!

B5层 发表时间: 04-09-08 13:56

回复: ljsh012 [ljsh012]   论坛用户   登录
多谢楼上的兄弟们了。
其实这个我现在已经很清晰了。起初只是因把第一个"和末尾的"匹配起来了,即看作了一对。所以在这个前提下看那个语句就越看越不对。第一个"不应该和最后一个"匹配的。
至于楼上有位说的当连接俩个以上的字符串时就用&,不太准确。当是同一种字符串时就不用这么麻烦了。比如select * from user 之间没必要用&来连接的。显得多余了。而只需当字符串要和变量连接时才有这个必要。常量字符串是要用""包括起来的。至于变量就不需要了。要了就成一般的字符串了。
而我想问286大哥一点的是。数据库语言中为何要用''包括用户名和密码呢?因为数据库中存储的是字符串?但为什么当通过mssql 2000中的sa空口令获得执行系统权限时,当我用echo "hello my friend" >c:\a.txt执行dos命令时,""怎么也提交不进去。为什么啊?困惑好久了。谢谢。

B6层 发表时间: 04-09-08 19:01

回复: 286 [unique]   版主   登录
任何一个语言都有自己的语法,SQL就是这样规定,对于字符串用单引号括起.这是规定.又比如FOXPRO可以用[]括,C语言则只能用""括,''括表示是字符而不是字符串,你记住就行了.另外不是用''括用户名和密码,而是只要是字符串都用.否则 a=123,123是字符中还是数呢?就分不清了.

echo "hello my friend" >c:\a.txt在DOS中是正确的语法,但你在SQLSERVER中,有些命令SQL并不能成功解释,所以执行也就不一定正确了.另外你这种命令是在那里执行呢?是在DOS环境,还是TELNET环境,不同环境也不会完全一样.(我有解释仅是我的理解,仅供参考)




B7层 发表时间: 04-09-09 09:15

回复: ljsh012 [ljsh012]   论坛用户   登录
这个命令是在一个能够通过sa空口令获取cmd shell的软件中执行的。它是通过sql2000种的_xpcmdshell这个存储过程(是存储过程吧?忘了)来执行的,我想也就是一切命令首先得经过sql2000处理后才才能提交到系统。而碰巧就是""提交不进去。难道是这个软件的缺点。不太会吧?
我说的不一定对。知者赐教。谢谢。同时谢谢286。

B8层 发表时间: 04-09-09 13:20

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号