LCyidian

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数据包中与数据库进行交互的数据头;

    cookicesrefereeuser-agentpostgetget参数显示在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注入工具:

  1. sql map;2.Havij(萝卜头)3. Pangolin(穿山甲);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分类:

技术点:

相关文章: