就比如登录页面,输入用户名admin和密码123456,网页告诉服务器我的用户名和密码,服务器就会去问数据库,有没有这个用户名admin并且密码为123456的用户,服务器收到数据库的回答就回去告诉网页,有这个用户就登录成功,没有就登录失败。SQL注入就是在网页告诉服务器我的查询数据的时候做的手脚,攻击者在输入框中插入一些特殊的代码,以便欺骗数据库执行它不应该执行的操作。
举个简单例子,用户在搜索框中输入一个关键字来查找用户信息。网站的后台代码可能会类似于以下的SQL查询
SELECT * FROM users WHERE username = '$input';
此时要是攻击者在搜索框中输入
' OR '1'='1
如果在没有适当的过滤和验证的情况下的话,查询语句会变成:
SELECT * FROM users WHERE username = '' OR '1'='1';
由于 ‘1’=‘1’ 总是成立的,仔细看引号,然后又是OR,只要一个为真就是真,这个查询会返回所有用户的信息。
举个简单例子,用户在搜索框中输入一个用户名和密码。网站的后台代码可能会类似于以下的SQL查询
SELECT * FROM users WHERE username = '$input_username' AND password = '$input_password';
攻击者可以在用户名和密码的输入框中输入恶意的注释,利用注释来修改查询语句。比如输入
' OR '1'='1' --
在这个输入中,‘–’ 是表示SQL的注释,它会导致后面的查询语句被忽略。因此,查询语句将变为以下
SELECT * FROM users WHERE username = '' OR '1'='1' -- ' AND password = '$input_password';
看到没?‘–’ 直接被注释掉了,然后' ' OR '1'='1'
这条语句又成了真!所以将返回所有用户的信息。
举个简单例子,用户在搜索框中输入一个用户名和密码。
假设正常情况下,用户输入的用户名和密码是:
用户名:admin
密码:123456
那么正确的后台查询
SELECT * FROM users WHERE username='admin' AND password='123456';
数据库会验证用户名和密码是否匹配,然后返回登录成功或登录失败。
但是呢,攻击者在用户名那里直接输入' OR '1'='1
在这个句子中,’ OR ‘1’='1 是一个非法参数,它是用于进行SQL注入攻击的恶意输入。攻击者通过在用户名输入框中输入这样的参数来绕过密码验证,导致整个条件变为真,从而绕过了正常的身份验证。
这样查询语句就会变为
SELECT * FROM users WHERE username='' OR '1'='1' AND password='';
OR前面是空,但’1’=‘1’ 这个条件始终为真,而 ‘OR’ 和 ‘AND’ 之间的优先级会导致整个条件变为真,绕过了密码验证。因此,攻击者可以通过输入这样的用户名绕过密码验证,即使密码不正确。
在 SQL 语句中添加一些额外条件,以此来改变执行的行为。
举个简单例子,用户在搜索框中输入一个用户名和密码。网站的后台代码可能会类似于以下的SQL查询
SELECT * FROM users WHERE username = '$input_username' AND password = '$input_password';
攻击者可以在用户名输入框中输入
' OR '1'='1'; --
So
SELECT * FROM users WHERE username='' OR '1'='1'; --' AND password='$password';
OR前面是空,但’1’=‘1’ 这个条件始终为真,后面又是注释,So~
时间盲注是一种高级的注入技术,攻击者通过在恶意查询中添加等待时间函数,根据系统响应时间来判断条件是否成立。
举个简单例子,假设有一个登录页面,用户需要输入用户名和密码进行登录。后台的查询语句可能是这样的
SELECT * FROM users WHERE username = '$username' AND password = '$password';
攻击者输入的用户名
admin' AND IF(1=1, SLEEP(5), 0); --
这将会变为
SELECT * FROM users WHERE username = 'admin' AND password = '' AND IF(1=1, SLEEP(5), 0); --';
在这个例子中,条件 “1=1” 成立,SLEEP函数会引起5秒的延迟。攻击者可以观察登录页面的响应时间,如果登录页面在输入这个用户名后有明显的延迟,那么他们就可以推断出系统中存在用户名 “admin”。
布尔盲注技术相对复杂,攻击者通过构造SQL查询,根据系统的True或False响应来逐位猜测数据。举个简单例子,上面的 3. 利用传入非法参数进行SQL注入攻击
就是一个布尔盲注,实际的布尔盲注攻击可能会更加复杂,涉及更多的条件和查询,
还有堆叠查询注入(Stacked Queries Injection)、NoSQL注入、二次注入(Second-Order Injection)、基于错误的注入(Error-Based SQL Injection)、UNION查询注入也是比较常见的。时间不够了要睡觉了
…
偶尔搜到自己三年多前写的
https://blog.csdn.net/hanhanwanghaha/article/details/106583521
回想我三年前还是个小年轻勒~哈哈哈
现在听的歌曲的周杰伦的发如雪
社会工程学,好早好早之前就听过黑客利用心理学来实行攻击。
欢迎关注:https://blog.csdn.net/hanhanwanghaha
网安小白成长ing
欢迎各位交流,一起进步。