SQL 注入基本原理

admin 2024年12月28日13:26:34评论25 views字数 1047阅读3分29秒阅读模式

阅读本文大概需要 1 分钟

基本概述

SQL 注入,是 Web 渗透中最常见的漏洞。它所带来的危害也往往比较严重,利用此漏洞,攻击者可以对目标系统进行脱库,甚至控制主机。

产生原因

SQL 注入漏洞的根本原因,是程序编写人员在编写程序时,没有严格的对前台传递的参数进行校验。该参数破坏了原有的 SQL 语句结构,从而导致 SQL 注入。

一旦存在 SQL 注入,则攻击者可以任意构造 SQL 语句。

基本原理

那么现在我来简单说一下我对 SQL 注入原理的认知。

下面是一张简单的用户表,就叫它 user 表吧。

id username password
1 admin admin
2 root root

我现在有一个用户登录的功能,那么我的 SQL 语句是这样的。

select id,username from user where username='$username' and password='$password'

而我只需要判断查询出的结果是否为空即可。

正常情况下,提交参数 username=admin&password=123,那么得到的语句是这样的。

select id,username from user where username='admin' and password='123'

此时肯定是查不出数据的,因为 admin 账号正确的密码是 admin。所以此时会登录失败。

但是如果提交参数 username=admin'#&password=123,那么会得到以下语句。

select id,username from user where username='admin'#' and password='123'

# 在 SQL 是注释符,所以上面的语句等同于下面这条。

select id,username from user where username='admin'

此时肯定是可以查出数据的,这就导致了不需要密码就可以任意用户登录。

也可以提交参数 username=admin' or '1'='1&password=123,得到语句。

select id,username from user where username='admin' or '1'='1' and password='123'

or '1'='1' 是恒成立的,所以上面的语句同样可以查出数据。

总结

上面只是一个最为简单的例子,真实的渗透中,基本不存在这么容易的 SQL 注入。

但我们知道原理,就可以一步步探索。

不断向前,披荆斩棘,加油!

原文始发于微信公众号(白帽渗透笔记):SQL 注入基本原理

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

发表评论

匿名网友 填写信息