[分享]SQL注入漏洞应用篇
上一篇 /
下一篇 2006-12-02 23:37:37
查看( 434 ) /
评论( 11 )
来源:eNet硅谷动力
iyrk;Xr7a8s8s0作者:Lovexysky
★黑基空间★8`J4V QU%s
p如果你已经掌握了
SQL注入漏洞的一些相关的基础知识,那是不是觉得看了理论有一种想急于知道如何实际动手操作的冲动,好吧,Let’s go,这篇文章我们就来实战SQL注入,不过针对网站的数据库是ACCESS的,毕竟在国内都是用虚拟机,一般只有FTP上传权限,所以还是很有市场的。
★黑基空间★%V~cG6^I
t8Ji"O&J★黑基空间★S,dW.wo&Q首先要注意的是,如果你以前没试过SQL注入的话,那么第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。
8DyU"}nW1T]T E0★黑基空间★;Xh4N-X"j;l 1.入侵测试目标:
2~$A].[yJ_|K0★黑基空间★9y2f#G\K:B,s4f*J 前不久我们学校的一个同学做了个网站,做的还挺漂亮的,叫我去看下,我顺便对它进行了一次安全检测。文章发表前已经征得该同学的同意,请不要效仿。下面的真实网址已经被我屏蔽。
,|;zOk%R]&Te1bS0O;|){
c9p'c*BI^0 测试网站:
http://www.xxx.com/index.asp★黑基空间★Zy1e@X8EGn/hck"s★黑基空间★J$aM^3DD5XA 2.寻找可能的SQL注入点
Cl)p i]4c'g:D|6^z0;BqX3o]8z8lb k$D0 我们知道,一般的文章管理系统,下载系统,论坛,留言本,相册等都会有个show.asp?id= list.asp?id= news.asp?id= 什么的,其实一看就知道是调用SQL语句查询数据库并显示出来。我们不难发现这个站的新闻系统就是show.asp?id=的形式,随便点一个链接得到地址如下:
\Q _A2f7_ Z+P;VL0★黑基空间★{0r?6Zn7ORJ http://www.xxx.com/show.asp?id=474.gg7h.aGk{ A&PA9@0,T ]d8dSs0 从这个地址就知道是通过show.asp执行SQL语句访问数据库,可想而知,SQL语句原貌大致如下:
★黑基空间★4?nw5B)wXn
t,XS9q!\fjQ6d0 select * from 表名 where 字段=xx,如果这个show.asp对后面的id整型参数过滤好的话,就可能存在SQL注入漏洞。
-I8a3D6u
e0★黑基空间★'U X$BS0tD+}C 3.判断SQL注入是否存在
★黑基空间★^
Es%Y/Q&w%O★黑基空间★9^vCTB(@$~o 通过上面的分析知道,要判断有没有SQL注入漏洞,就得看show.asp有没对参数过滤好,所以可以用以下步骤测试SQL注入是否存在。
★黑基空间★Uo(m+xx ay>>>更多专题请看论坛和WEB攻击初步 数据库SQL注入攻击 注入漏洞测试分析专题
2J_,j6I0T&u\F4tn0★黑基空间★pk-_b5i z[
本帖最后由 mpf_hgsf 于 2006-12-2 23:10 编辑]
论坛模式
推荐
收藏
分享给好友
推荐到圈子
管理
TAG:
SQL注入
-
mpf_hgsf
发布于2006-12-02 22:59:54
-
a.最简单的判断方法 ★黑基空间★*gt
O1_v!r(Y
? J+Y
space.hackbase.com{-]ct%Y/nD
在要检测的网址后面加一个单引号:http://www.xxx.com /show.asp?id=474’
\[#B"D-G+b i3rispace.hackbase.com此时show.asp中的SQL语句变成了:select * from 表名 where 字段=xx’,如果程序没有过滤好“’”的话,就会提示 show.asp运行异常;但这样的方法虽然很简单,但并不是最好的,因为:
b3VkD
\M黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香
z.CVKf9}●★黑基论坛★● - 全球最大中文黑客社区 第一:不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。 黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香3|
H9X
[p
2_tq:zC 第二:由于以前存在过的1’ or ‘1’=’1漏洞,所以目前大多数程序员已经将“’“ 过滤掉,所以用" '"测试不到注入点,所以一般使用经典的1=1和1=2测试方法,如下:
J c?VEh\★黑基空间★,}#k{u zuX
http://www.xxx.com /show.asp?id=474 and 1=1, show.asp运行正常,而且与http://www.xxx.com /show.asp?id=474运行结果相同,如图1:
@'dk5E{
KD.A0|dQ+c8\5x3E:Y~n(\
(Y8l\3j9N★黑基空间★space.hackbase.com'aVn0V c;u
&u:Xna XM2c5s★黑基空间★★黑基空间★qS#S;g5q&D
http://ww.xxx.com /show.asp?id=474 and 1=2, show.asp运行异常,(这就是经典的 1=1 1=2 判断方法)如图2:
1BK~q7`yq/W(v
I&G;~*@N[u{
6g5iP7p'GH"n
L'q-`-S
"y2C5l2h G#c0c★黑基空间★
P
Tij6w]5[z●★黑基论坛★● - 全球最大中文黑客社区
%t[3{hO7C s#D黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香 这里很明显当加 and 1=1 的时候返回完全正常的页面,加 and 1=2 显示:暂时还没有文章!
\wn
vi
@@0A@G★黑基空间★$zp;H'v%BxN d:p
到这里基本上可以断定他存在SQL注入,至于能不能注出账号密码来,还需要更进一步的注入测试,这里只能得到SQL注入点: http://www.xxx.com/show.asp?id=474 此时show.asp中的SQL语句变成了:select * from 表名 where 字段=xx’,如果程序没有过滤好“’”的话,就会提示 show.asp运行异常;但这样的方法虽然很简单,但并不是最好的,因为:
%iWbb*U●★黑基论坛★● - 全球最大中文黑客社区
/|6o|%H:N●★黑基论坛★● - 全球最大中文黑客社区 第一:不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。
7|7p9y}m&E6f%R%y4G-X(y
W|sVa`
第二:由于以前存在过的1’ or ‘1’=’1漏洞,所以目前大多数程序员已经将“’“ 过滤掉,所以用" '"测试不到注入点,所以一般使用经典的1=1和1=2测试方法,如下:
?6?_7Rq P
'QI:g }.|$X3[★黑基空间★ http://www.xxx.com /show.asp?id=474 and 1=1, show.asp运行正常,而且与http://www.xxx.com /show.asp?id=474运行结果相同,如图1: !h%O"bb_
-G#gs8[Cd黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香 ★黑基空间★ }6\#u*obn7vT2f
%^7{M\1h"RT{space.hackbase.com
M_!hR5Cil黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香
]Wio ]!k!q★黑基空间★ http://ww.xxx.com /show.asp?id=474 and 1=2, show.asp运行异常,(这就是经典的 1=1 1=2 判断方法)如图2:
oZ-AG3kX
w C~e
T]$}2kspace.hackbase.com
XO
q*`8]BN1w,t0]
E{Q(w"U&Lz0LP/J+c
y?
&v$lzMaX&qZj●★黑基论坛★● - 全球最大中文黑客社区5Z?;Y8I5N5n
这里很明显当加 and 1=1 的时候返回完全正常的页面,加 and 1=2 显示:暂时还没有文章!
5Md*u4d"Q7RX&dc3~
T9dax9k"z)XM7m 到这里基本上可以断定他存在SQL注入,至于能不能注出账号密码来,还需要更进一步的注入测试,这里只能得到SQL注入点: http://www.xxx.com/show.asp?id=474
-
mpf_hgsf
发布于2006-12-02 23:02:28
-
4.判断表是否存在 黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香AxO+~X"q{
space.hackbase.comP"^-j(^pH)?7IzW
国内的一般程序员在设计数据库的时候都会用一些特定的做为表名,字段名什么的。比如说后台管理员一般放在表admin里面,而注册的用户放在表users里,当然,只是一般,依照各程序的不同而不同。 space.hackbase.com!h&ZVCs
Bvge Wgd
这个站是我同学自己写的,我还是先判断管理员表admin是否存在,在后面加上语句:and exists (select * from admin)变成http://www.xxx.com/show.asp?id=474 and exists (select * from admin)提交访问后返回的页面如图3: ★黑基空间★q3I1@1d9[3K
黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香8o PL:zO'|*zM+{

@FE aK%kz.}space.hackbase.com●★黑基论坛★● - 全球最大中文黑客社区4Am
x%?!qIl+g-Rk
这就说明我猜的admin表名不存在,继续猜另外的名字,这里可以参考国内常见的程序的表名,比如:admin user vote manage users 会员 用户 管理员 admin_admin userinfo bbs news system等,这个站我最后猜到的是:users,语句:and exists (select * from users)。 黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香{j*p.s#S9^a
f8VHjC^:n,ccI
5.进一步判断表里的字段是否存在 黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香
a:p-I*E6Y3~1I/}
space.hackbase.com}:]TMcNc1P^{ByN6P
判断字段id 是否存在,这个一般都有,自动编号。如果存在了顺便猜一下管理员的id值。
:L2@S2@Y]\
bGG'~space.hackbase.com
L5fR6s
H\●★黑基论坛★● - 全球最大中文黑客社区 判断存在语句:and exists(select id from users)
2x6i6Q\8G9O1R(T!X0I1W
.Hm
P^C7Pi,|SuW●★黑基论坛★● - 全球最大中文黑客社区 判断编号语句:and exists(select id from users where id=1) ●★黑基论坛★● - 全球最大中文黑客社区#?%j'r{Jz
`
●★黑基论坛★● - 全球最大中文黑客社区FQ0r2cA+H(t$mE
一般管理员账号密码放在第一位,也就是id=1,如果不是就猜下去,猜id=2 猜id=3等啦。
p1Q_m;E)J'Ft(R@F:y!V
由于这个站是自己写的代码,所以会有点不同,当判断是否不过你可以猜到他的对应的可能是userid,因为他表名取做user呀,把上面的id改为userid就返回了正常的页面,如图4: 黑基论坛,培训,动画,教程,攻击,入侵,挂站,破解,漏洞,扫描,共享,木马,病毒,跳板,监听,嗅探,炸弹,伪装,拒绝服务,防火墙,杀毒软件,入侵检测,身份认证,缓冲溢出,蠕虫,安全工具,攻击程序,加密,解密,外挂,私服,ddos,webshell,sql注入,灰鸽子,冰河,熊猫烧香.?jC3| v^G'v*p
)pR7oh9Y*rB●★黑基论坛★● - 全球最大中文黑客社区
VN%Ut*r#Co!@8w
space.hackbase.com"l
Fh&e
W'I&D
6L;a,gskspace.hackbase.comr!EVhZ%t%D{
HX&OHnS9^U R
至于这个userid值为多少,同样猜,and exists(select userid where userid=1)改变1这个数字,一直猜到页面显示正常为止。这里我猜到的是userid=11,如图5:
zwX-Q&GI)b2B/hm)O0?%`Y*tb

.e2ueSj U&s~(}*N
?FnOm
)T
[O4z
bspace.hackbase.com
|*Xwt!J SD#\s:x 最后猜出这个继续猜出其它的字段,用户名字段最后为username,密码字段为userpwd,用到的语句分别为:and exists (select username from users)和and exists (select userpwd from users),这里就不抓图了。 ●★黑基论坛★● - 全球最大中文黑客社区5s,X%p&R