SQL注入原理

admin 2024年12月24日10:54:20评论1 views字数 1009阅读3分21秒阅读模式

一、判断SQL注入漏洞

  • 参数带入数据库查询:传入的参数拼接到SQL语句,然后写入数据库查询。
    • 例如:用户传入的参数为1':select * from users where id=1'
    • 因为这个SQL语句不符合语法规则,所以导致报错(有报错就说明有可能存在SQL注入漏洞)

 

判断原理

    • 当用户传入的参数为1 and 1=1时(select * from users where id=1 and 1=1
    • 因为1=1为真,id=1也是真,也就and两边同真(与运算),所以页面会返回id=1的结果。
    • 如果用户传入参数为1 and 1=2的时候,因为1=2为假,id=1为真,也就是and两边有一个为假,所以页面就会返回和id=1不一样的结果。根据这些结果,就大概可以判断存在SQL 注入漏洞。然后我们就可以进一步拼接SQL攻击语句来进行攻击,造成对方信息泄露,甚至获取到服务器的权限。
  • 常用判断语句:根据页面回显的信息进行判断
id =1 and 1=1
id = 1 and 1=2
id = 1 or 1=1
id = '1' or '1'='1'
id=" 1 "or "1"="1"
  • 为了演示方便,先在数字型注入里查看一下用户名,然后在字符型(用户名是字符型)注入里传参进行判断

 

  • 用单引号判断,发现报错,则可能存在注入

 

 

  • 也可以通过传参进行判断:
    • lucy'and '1'='1:后面不加引号是因为页面里会拼接SQL语句;输入lucy'and '1'='2就发现页面会有相应变化

 

  • 无回显情况判断是否存在注入:根据输入的语句,页面没有发生任何变化,或者没有将数据库中的内容显示到网页中
    • 可以用sleep()来判断是否可以注入
    • lucy'and sleep(5)-- (注意:--后面要加一个空格),发现页面没有任何变化
    • sleep(5):大于5秒再返回页面
    • -- :用注释符注释页面拼接的单引号和后面的查询语句

 

二、注入流程概述

  • 先判断是否存在注入,然后判断注入类型
  • 判断字段数:order by
  • 确定回显点:union select 1,2
  • 查询数据库信息:@@version @@datadir
  • 查询用户名:user()
  • 查询数据库名:database()
  • 文件读取:union select 1,load_file('C:\\wondows\\win.ini')#
  • 写入 webshell:select..into outfile...
  • 使用 sql 注入遇到转义字符串的单引号或者双引号,可以用HEX编绕过

- source:securepulse.website

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日10:54:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入原理https://cn-sec.com/archives/3545230.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息