渗透测试之SQL注入案例入门

您所在的位置:网站首页 渗透sql注入 渗透测试之SQL注入案例入门

渗透测试之SQL注入案例入门

2023-07-21 04:29| 来源: 网络整理| 查看: 265

Hello,大家好

今天给大家带来的是渗透测试之SQL注入案例入门

众所周知几乎OWASP每年的Top 10安全问题中,SQL注入一直高居榜首,这也就成为了安全测试、渗透测试领域最为关注的一个点。

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序, 而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

图片

SQL注入的应用场景

1、对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL、SQL Server、Oracle;

2、通过SQL注入攻击,可以获取、修改、删除数据库信息,并且通过提权来控制Web服务器等其他操作;

3、SQL注入即攻击者通过构造特殊的SQL语句,入侵目标系统,致使后台数据库泄露数据的过程;

4、因为SQL注入漏洞造成的严重危害性,所以常年稳居OWASP TOP10的榜首!

SQL注入的特点

1、拖库导致用户数据泄漏

2、危害web等应用的安全

3、失去操作系统的控制权

4、用户信息被非法买卖

5、危害企业及国家的安全

SQL注入案例

下图是一段php的原码,其中对数据库的查询语句中直接使用了前端页面传递的表单数据。

图片

如果我们前端页面输入一个正规的数据,user_id为1。

则执行:select first_name,last_name from dvwa.users where user_id='1';

可以获得user_id为1的first_name和last_name并返回,这是我们正常使用系统并可以得到正常的结果。

1、注入布尔表达式的情况

但如果我们在前端页面输入user_id的数据为:' or 1=1 -- ' 即为:select first_name,last_name from dvwa.users where user_id=' ' or 1=1 -- ' ' 则整个语句的意思是从数据库库的users表里面查询first_name,last_name两个字段的所有内容。

2、注入逻辑运算的情况

如果前端页面输入user_id的数据为:' and sleep(5) -- '' 即为:select first_name,last_name from dvwa.users where user_id='1' and sleep(5) -- '' 如果执行页面响应等待了5s则这个sleep(5)就可以更换为你希望的其他任何条件,从而获取到你不应该看到的数据。

3、注入union语句

UNION语句用于联合前面的SELECT查询语句,合并查询更多信息;即为:select first_name,last_name from dvwa.users where user_id='' union select 1,2 -- '' 里面的1,2,3 代表的是字段名,union语句查询的时候,前后的 字段数量必须相同,所以我们可以用数字代表字段,来猜测union之前的语句中有几个字段。这里 显然只有两个字段。

SQL注入防范

1、 用存储过程来执行所有的查询,使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。

2、 限制表单或查询字符串输入的长度。

3、检查用户输入的合法性,确信输入的内容只包含合法的数据。

4、将用户登录名称、密码等数据加密保存,加密用户输入的数据,然后再将它与数据库中保存的数据比较。

5、检查提取数据的查询所返回的记录数量,如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理。

今天分享到此结束,欢迎大家点赞收藏,期待下期更多干货内容!!!

 文末福利 大家可以加老师vx领取最新资料哦

 别忘了扫码领资料哦,备注:csdn软件测试,可免费获取给你准备的

【全国讲师团队-随堂】软件测试教程_完全入门_学完达到软件测试工程师水平



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3