SQL注入学习——资源、笔记整理
OWASP-top10(2021)
SQL注入产生原因:注入产生的原因是接受相关参数未经处理直接带入数据库查询操作;注入攻击属于服务端攻击,他与操作系统、数据库类型、脚本语言类型无关。
SQL注入验证方法:在参数后面进行单引号拼接 and 1=1、and1=2或单引号,看页面是否有报错,如果产生报错说明有注入点。
Ps:and为与(且),当拼接 and 1=1 时sql语句为真不会报错,当拼接and 1=2 时 sql语句为假将产生报错。
SQL注入易产生的地方:
- 与数据库交互的网页;
http://www.*.com/*.asp?id=xx(ASP注入)
http://www.*.com/*.php?id=xx (php注入)
http://www.*.com/*.jsp?id=xx(jsp注入)
ps:必须为动态脚本,以及必须有参数才可产生SQL注入;
- 用户进行登录、更新、注册、留言等地方;
- HTTP数据包中与数据库进行交互的数据头;
cookices 、referee 、user-agent ,post ,get (get 参数显示在url 上,)
万能密码登录:
当找到用户登录页面,可首先进行万能密码登录尝试:
Yuan ‘or 1=1- –
Ps :用户名为不存在,该条语句为假,但用了or (或)进行拼接且1=1 为真,则该语句为真,继续执行,后面- -为注释,将后面语法进行注释不再执行,则该条语句直接越过数据库验证,成功登录。存在万能密码的地方,也就存在这SQL 注入;
注入分类:
数字型、字符型、搜索型(’%vince%’ or 1=1)、XX型号(username=(’xx’)or 1=1);
注入提交方式:
GET提交、POST提交、Cookie(数据头等)提交
Ps:其中get提交在url可直接查看参数,post与数据头方式提交需要进行Burpsuite抓包;
注入攻击支持类型:
- Union(联合查询)注入:union函数与order by 语句配合使用,可爆破出数据库字段;
Information_schema注入:在mysql数据库5.0以上版本,information_schema时mysql系统自带的数据库,其中保存这关于mysql服务器所维护的所有数据库信息。
PS:通常,union和information_schema联合使用;
- 基于函数报错注入(insert、update、dalete):updatexml()、extractvalue()、 floor()
- 盲注:
基于布尔型SQL注入:select ascii(substr(database(),1,1))>xxx;(xxx为数字)
基于时间型SQL注入:vince’ and sleep(x)# (x为数字代表时间,#为注释)
基于报错行SQL注入(类似于基于函数报错注入);
Ps:布尔型SQL注入不能应用于时间型SQL注入,但时间型SQL注入可以应用到布尔型SQL注入上,所有说,时间型SQL注入为万能注入语句。
- 宽字节注入:根GBK有关, %DF’ or 1=1 ,通过GDK编码使用汉字字符占取 \ 位置使转义效果失效。
Ps:宽字节注入需要满足三个条件才可触发:1.存在注入点、2.网页使用GBK编码手段3.phpStudy开启魔术符号magic_quctes_gpc功能。该功能的唯一作用就是将单引号转义成/’ 无法构成注入语句。
Ps:宽字节注入如果被编码,则可能造成不能成功注入;
SQL注入工具:
- sql map;2.Havij(萝卜头)3. Pangolin(穿山甲);
Original: https://www.cnblogs.com/LCyidian/p/15929034.html
Author: 学到凌晨一点
Title: SQL注入学习
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591850/
转载文章受原作者版权保护。转载请注明原作者出处!