求购程序
我的软件是木马克星
需要1个perl用来控制只有注册用户才可以升级病毒库
接收到ie发送的 用户名后
打开name.txt文件
判断是否有用户名
如果有就包pass.txt中的内容发送给用户
愿意做的话,
请把报价发送到
iparmor@luosoft.com
问题点数:200、回复次数:18Top
1 楼bubupig(布布猪)回复于 2001-12-20 22:52:05 得分 0
你是木马克星的作者么?名人啊,名人。这种简单功能用perl来说仅仅是不到百行的事情。不要花钱的。Top
2 楼liaokuo(辽阔)回复于 2001-12-21 00:08:09 得分 0
过奖了,谢谢Top
3 楼liaokuo(辽阔)回复于 2001-12-21 00:11:28 得分 0
#!/usr/bin/perl
print "Content-type: text/html \n\n";
$a="http://www.luosoft.com/510/virus.300";
#上面为路径.
open(FILE1,"name.txt");
@FILE2=<FILE1>;
$file3=@FILE2;
if (index(QUERY_STRING,@FILE2)>-1)
#上面这行问题很大,如果用户填A,很容易通过
{
print $a;
}
else
{
print @FILE2;
}
close(FILE1);
Top
4 楼netken(小肯)回复于 2001-12-21 09:26:13 得分 200
html文件写如下:
<FORM method=POST action="/cgi-bin/checkusr.cgi">
<INPUT type="text" name="usr" size=20>
<INPUT type="submit" value="发送">
</FORM>
然后 /cgi-bin/checkusr.cgi 的内容如下:
#!/usr/bin/perl
read(STDIN,$string,$ENV{'CONTENT_LENGTH'});
print "Content-type:text/html\n\n";
print "usr error !" unless $string;
open(DATA,"<name.txt");
while (<DATA>) {
if ( $string eq $_ ) {
open(SEND,"<pass.txt");
print while (<SEND>);
close SEND;
$ifsend = 1;
return;
}
}
close DATA;
print "usr error!" unless $ifsend;
试一下看行不行,感觉没什么问题;)
但注意你name.txt 的设置,最好不要有空行,或者字母极少的行
当然,可以在 while 前面加一些对 $string 的判断来提高安全性
pass.txt 是html格式么?若不是的话,最好在其前加上<pre>,或者用输出
content-type:text/plain\n\n
Top
5 楼netken(小肯)回复于 2001-12-21 09:30:38 得分 0
对了,忘记了
$string 需要解码的
$string =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/ge;
加在 read(...) 后面,hehe,太粗心了;p
还有在 while (<DATA>) {
后加 上
chomp;
hoho,净是些低级错误;(
Top
6 楼netken(小肯)回复于 2001-12-21 09:32:31 得分 0
总程序如下:
#!/usr/bin/perl
read(STDIN,$string,$ENV{'CONTENT_LENGTH'});
print "Content-type:text/html\n\n";
print "usr error" if length($string) > 1024;
print "usr error !" unless $string;
$string =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/ge;
open(DATA,"<name.txt");
while (<DATA>) {
chomp;
if ( $string eq $_ ) {
open(SEND,"<pass.txt");
print while (<SEND>);
close SEND;
$ifsend = 1;
return;
}
}
close DATA;
print "usr error!" unless $ifsend;
Top
7 楼liaokuo(辽阔)回复于 2001-12-21 09:56:11 得分 0
非常抱歉,有2个问题
A.上面的程序,是否传递
http://www.luosfot.com/cgi-bin/iparmor.cgi?我叫张三
然后判断我叫张三是否出现在name.txt里?
B问题:
我没有pass.txt,是否可以用
$a="http://www.luosoft.com/510/virus.300"
print $a;
来代替 open(SEND,"<pass.txt");
print while (<SEND>);
close SEND;Top
8 楼liaokuo(辽阔)回复于 2001-12-21 10:01:08 得分 0
刚刚测试
很明显
A问题:
http://www.luosfot.com/cgi-bin/iparmor.cgi?我叫张三
错误
http://www.luosfot.com/cgi-bin/iparmor.cgi?input我叫张三
仍然提示
"usr error"
帮我Top
9 楼liaokuo(辽阔)回复于 2001-12-21 10:02:32 得分 0
#!/usr/bin/perl
read(STDIN,$string,$ENV{'CONTENT_LENGTH'});
print "Content-type:text/html\n\n";
$a="http://www.luosoft.com/virus.300";
print "usr error" if length($string) > 1024;
print "usr error !" unless $string;
$string =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/ge;
open(DATA,"<name.txt");
while (<DATA>) {
chomp;
if ( $string eq $_ ) {
print $a;
$ifsend = 1;
return;
}
}
close DATA;
print "usr error!" unless $ifsend;
在ie中输入
http://www.luosoft.com/cig-bin?luojianbin
提示 ErrorTop
10 楼peifang(配方)回复于 2001-12-21 11:31:00 得分 0
我要帮你,你又不让,非要去花800元买,真是faint。如果对cgi得特性不熟悉,一点点拼凑出来的代码在cgi中会有相当多的漏洞,别人很容易就能得到你那个免费升级。Top
11 楼liaokuo(辽阔)回复于 2001-12-21 11:31:44 得分 0
你帮我,没什么条件吗?Top
12 楼liaokuo(辽阔)回复于 2001-12-21 11:40:29 得分 0
To netken(小肯)
很抱歉,有2个问题
A,我希望用http://www.luosoft.com/cgi-bin/iparmor.cgi?234234234
的形式来调用cig
B.我没有pass.txt,而用print "http://www.luosoft.com/virus.300"
格式来输出
其实我是用iparmor.exe 去读http://www.luosoft.com/cgi-bin/iparmor.cgi?234234234
的,我不需要任何html文件
成功后,立即付款,绝不失言Top
13 楼liaokuo(辽阔)回复于 2001-12-21 11:43:03 得分 0
我的name.txt是用 win 下的写字板产生的
有没有问题?Top
14 楼peifang(配方)回复于 2001-12-21 12:01:42 得分 0
你用iparmor.exe读取页面并不能会使安全性更高。因为完全可以用sniffer抓下来看你读取得是哪个文件。cgi中有很多安全知识的,恐怕你不会很了解。
name.txt用写字板产生有点问题,但是不是主要问题,可以忽略。Top
15 楼liaokuo(辽阔)回复于 2001-12-21 12:04:43 得分 0
帮我把下面问题解决,安全性以后再说
我想让ie输入
http://www.luosoft.com/cig-bin?luojianbin
来和这个cgi交流
To peifang(配方)
你想得到什么?
#!/usr/bin/perl
read(STDIN,$string,$ENV{'CONTENT_LENGTH'});
print "Content-type:text/html\n\n";
$a="http://www.luosoft.com/virus.300";
print "usr error" if length($string) > 1024;
print "usr error !" unless $string;
$string =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/ge;
open(DATA,"<name.txt");
while (<DATA>) {
chomp;
if ( $string eq $_ ) {
print $a;
$ifsend = 1;
return;
}
}
close DATA;
print "usr error!" unless $ifsend;
在ie中输入
http://www.luosoft.com/cig-bin?luojianbin
提示 Error Top
16 楼liaokuo(辽阔)回复于 2001-12-21 12:07:11 得分 0
my oicq:192285Top
17 楼netken(小肯)回复于 2001-12-21 19:43:14 得分 0
把 read(...) 那行改成
$string = $ENV{'QUERY_STRING'};
就可以了;)Top




