加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

看图说话:SQL注入(SQL Injection)漏洞示例

发布时间:2023-01-08 11:04:59 所属栏目:MsSql教程 来源:互联网
导读: 1、在OWASP Top 10(2017 RC2)中,注入类攻击名列榜首;
2、SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法;
3、以下实际场景实验,打开靶机,大家可以

1、在OWASP Top 10(2017 RC2)中,注入类攻击名列榜首;

2、SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法;

3、以下实际场景实验,打开靶机,大家可以看到这是一个根据用户ID查询用户信息的页面:

4、在“User ID: ”输入框里输入“3”,提交,可以看到页面显示ID = 3的用户信息,通过页面返回,我们猜测程序伪代码是:select first_name,last_name from TABLENAME where user_id = '+文本框内容+';

mssql拖库_北京邮电大学教务处 拖库_mssql拖库

5、模拟黑客“拖库”,在“User ID: ”输入框里输入“' or 1=1 -- ”,这里的"--"是MYSQL数据库的注释符,在它后面的内容全部作为注释信息,不被执行。提交后,程序拼接并在数据库执行的SQL是:select first_name,last_name from TABLENAME where user_id ='' or 1=1(因为--的存在,程序代码里主动拼接出的'符号,变成了注释内容,躲避了语法错误), 攻击成功,因为“or 1=1”的存在,返回表中所有用户信息(可以和数据库客户端截图对比观察):

6、猜表名,在“User ID: ”输入框里输入“' 3' and exists(select * from admin) --”,提交,系统返回dvwa.admin表不存在(类似的,我们可以根据数据库返回,判断数据库的具体类型):

7、继续猜表名,在“User ID: ”输入框里输入“' 3' and exists(select * from users) --”,提交,系统返回id =3的数据,证明数据表dvwa.users存在:

北京邮电大学教务处 拖库_mssql拖库_mssql拖库

8、上面第5步是SQL注入的基础手法。到现在为止mssql拖库,已经猜到表名,且可以在输入框里输入除了ID以外的其他SQL命令,且获得执行,如果还是想不起来能做什么,那你真的不适合做黑客;

9、最后提几个常用SQL注入的预防方法:

--采用预编译 .PreparedStatement(使用PreparedStatement查询可以阻止大部分的SQL注入。SQL引擎会预先将预编译内容内容进行语法分析,产生语法树,生成执行计划,后面无论你输入什么,都不再进行语法分析去产生新的执行计划)。

--严格检查输入变量的类型和格式、

--过滤和转义特殊字符。

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!