来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 发现注入点:http://www.xxx.com/xx.php?id=xxxx直接sqlmap脱库,发现有admin表,内容是显示的是账号admin密码admin,这时心里高兴了下,没加密。可是,曲折的在后面呢 !管理后台很容易找到,直...
发现注入点:
http://www.xxx.com/xx.php?id=xxxx 直接sqlmap脱库,发现有admin表,内容是显示的是账号admin密码admin,这时心里高兴了下,没加密。可是,曲折的在后面呢 !管理后台很容易找到,直接上admin admin 可是,显示密码不对,怎么回事?? 在看看数据库,翻遍数据库,账号密码也就这一个admin admin,(事实上也是这么回事) ,看看它登陆页面的源码吧,注入点能爆出路径,可以读出文件内容,直接读login.php 内容如下: <? $filename = "password.txt"; $fd = fopen( $filename, "r" ); $contents = fread($fd, filesize($filename)); fclose( $fd ); if($T1=="admin"){ if($T2==$contents){ setcookie("ad","$T1"); header("location:editor/edit_index.php"); }else{ ?> <script language="javascript"> alert("密码错误"); window.history.back(); </script> <? } }else{ ?> <script language="javascript"> alert("用户名错误"); window.history.back(); </script> <? } ?> 看到了吧!!!当时我就愣了一下,靠。。。。。。。。你妹的,怪不得找不到密码呢 好了,直接在域名后面加password.txt,密码出来了。 登陆后台页面,发现三个上传点,第一个是eweb3.8 (直接放弃),第二个上传点控制 的非常死,各种变换都不行。还是第三个注入点有用,直接上传d,php,提示上传成功, 呵呵,上传是成功了,但是找不到路径,找啊找就是找不到路径。。晕啊。。。。。。。。。 找上传图片的路径,这时在读处理上传的php代码,代码如下 <? if($_FILES['sytp']['name']!="none"&&$_FILES['sytp']['name']!=""){//判断上传文件是否为空 $thistype=$_FILES['sytp']['type'];//将上传的类型传给$thistype //echo time().$_FILES['sytp']['name']; //exit; if("image/pjpeg"==$thistype or "application/x-shockwave-flash"==$thistype or "image/gif"==$thistype){//判断是否是我要的类型 $file_name = "shouyetupian/".time().$_FILES['sytp']['name'];//time()是为了区分两个文件不是同一时间传的 include("../connect.php");//调用connect.php里的内容 $sql="select count(*) from shangchuantu"; $result=mysql_query($sql,$db); $jie=mysql_fetch_row($result); $zhong=$jie[0]; if($zhong<5){ $sql1="select max(paixu) from shangchuantu"; $result1=mysql_query($sql1,$db); $jie1=mysql_fetch_row($result1); $zhong1=$jie1[0]; $zhong1=$zhong1+1; $query="insert into shangchuantu values('','$file_name','".$_POST['url']."','','$zhong1')"; mysql_query($query,$db); if(!move_uploaded_file($_FILES['sytp']['tmp_name'], $file_name)) {//上传文件,$_FILES['sctb']['tmp_name']临时目录传到$file_name实际目录 ?> <script language="javascript"> alert("文件上传失败,请稍候再试"); window.history.back(); </script> <? }else{//上传成功 ?> <script language="javascript"> alert("文件上传成功!"); location.href="shanchuantu.php"; </script> <? } }else{ ?> <script language="javascript"> alert("图片不能超过5张"); window.history.back(); </script> <? } }else{//如果类型不对 ?> <script language="javascript"> alert("文件上传失败,请稍候再试"); window.history.back(); </script> <? } }else{ ?> <script language="javascript"> alert("请选择上传图片"); window.history.back(); </script> <? } ?> 关键是file_name 是怎么形成的, $file_name = "shouyetupian/".time().$_FILES['sytp']['name']; Time() 返回自从Unix 纪元(格林威治时间1970 年1 月1 日00:00:00)到当前时间的秒数 比如你上传文件名为d.php,上传之后文件名为: 当前时间d.php 从代码页可以看出,是不返回上传后的文件名,这时怎么办,根据时间去碰文件名 本地搭建php服务器,echo 出time() 上传之前访问本地 http://www.2cto.com /time.php 返回时间:1345279425 这时快速的去目标网站去上传图片,多上传几个,道理你懂的,呵呵 上传完了之后在访问http://127.0.0.1/time.php 记下时间1345279475 相差50秒,也就是说上传的文件名在1345279425d.php—-1345279475d.php 之间.好吧,去碰吧。。。。。。。。。。。。。。。。。。。。。。。。。 碰啊碰。。。。。碰到了啊。。。。。。 菜刀连接,,成功!!!!!!!!! |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com