标签:tuser name 登录 攻击 sql 详解 user SQL 注入
sql注入
威胁简介
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。
攻击思路
偿试所有可以输入的地方,偿试注入攻击。 根据返回的报错结果,判断后台服务的类型及数据库的类型。 确认后台服务及数据库类型后,改进攻击方案,进行有针对性的攻击。
攻击示例
要进入一个系统,当然最离不开的就是登录界面,所以我们就来看看如何免密码登录系统。
登录界面要求两个输入项:用户名、密码。
我们可以这样实现免账号登录:用户名输入“’ or 1=1 --”, 密码输入随意字符。
那么现在来分析一下,为什么可以免账号登录。
后台验证一般是类似的SQL:
String sql = “select * from tuser where user_name=’ “+user_name+” ’ and user_pass=’ “+user_pass+” '”;
拼上我们输入的参数后,语句变成了:
select * from tuser where user_name=’ ’ or 1=1 --‘and user_pass=’’
后面的"–‘and user_pass=’’" 相当于是注释代码,不生效。实际执行的SQL为:
select * from tuser where user_name=’ ’ or 1=1
这样一定要查出用户数据,很可能后面的逻辑处理就当作用户登录成功处理了,然后实现了免密码登录。
如果希望进一步加强危害,可以实现任意语句执行,例如:用户名传入“’; drop table tuser; --”; 实际执行的SQL变成了:
select * from tuser where user_name=’’ ; drop table tuser; --’ and password=’’
这样你的表就没了~
应对方案
推荐方案
采用 占位符 方式进行SQL传参,禁止将入参直接拼接到SQL中 。
标签:tuser,name,登录,攻击,sql,详解,user,SQL,注入 来源: https://blog.csdn.net/qq_43590771/article/details/111171451
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。