新手学渗透之SQL注入原理

  • A+
所属分类:颓废's Blog
摘要

那么这个时候,我们来输入一下一些而已的sql注入语句,然后看看我们执行的其实是:

想要了解SQL注入原理,就必须去明白什么是数据库,这里我就大概讲一下,数据库就是存储数据的,如果我们需要用的时候,可以用编程语言去调用这个数据,让他展示在页面上。

开始讲解SQL注入原理

我们首先先来看看Web程序三层架构:

  1. - 界面层
  2. - 业务逻辑层
  3. - 数据访问层

区分层次是为了啥,为了"高内聚低耦合",什么是低耦合,就是程序直接关联性不能太强,为什么,如果A产品和B产品是关联的,如果有一天A产品坏了,可能就会导致B产品也坏,这样就是不好的设计理念,所以这里为什么有三层,如果三层中一层坏了,其他两层是不会收影响的,并且,分层式结构是最常见,也是最重要的一种结构被应用于众多类型的软件开发。

数据库驱动的Web应用程序也是有三层:

  1. - 表示层
  2. - 业务逻辑层
  3. - 数据访问层

如图所示(虽然画的有点丑,但还是凑合看吧~):

新手学渗透之SQL注入原理

上图大概过程就是:

 1. 访问了https://www.0dayhack.com连接到此网站的服务器
 2. 业务逻辑层的服务器从本地存储加载index.php脚本并且解析
 3. 脚本连接对应的数据库,并且执行SQL语句
 4. 数据库范围层的数据库返回SQL语句执行的结果给服务器
 5. 然后服务器讲内容封装成了HTML,并且发送给了浏览器
 6. 然后表示层(浏览器)解析HTML的文件,将它的内容展示出来


我们现在再以DVWA为案例来讲解SQL注入原理:

新手学渗透之SQL注入原理

那么当我在输入框里输入1的时候,执行的是哪段sql语句呢,我们可以来看看:
新手学渗透之SQL注入原理

等于说,当我们输入一个语句后,会这么执行sql语句:
`SELECT first_name, last_name, last_login FROM users WHERE user_id = '1'`
(还有之前我讲过DVWA low等级的注入,可以看看:https://www.0dayhack.com/post-815.html)

那么这个时候,我们来输入一下一些而已的sql注入语句,然后看看我们执行的其实是:

(绿色字体皆为代码部分)

SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=1
SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=2
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 3-- a'
SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),2-- a

Sql注入原理之万能密码登录

这里我就利用一个平台来讲解:
新手学渗透之SQL注入原理

这里他说了sql执行的语句是`select user_id,user_type,email from users where user_id='用户名' and password='密码'`,那么我们是否可以构造一下sql语句,使他具有攻击性。

小知识(看了别打我):
新手学渗透之SQL注入原理

然后我们来利用万能密码来登入网站:

新手学渗透之SQL注入原理

成功登入:

新手学渗透之SQL注入原理

万能密码原理:

新手学渗透之SQL注入原理

(因为它这里写了原理,我就图个方便直接截图了~)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: