RandomNumber
php伪随机
爆破得备份文件
然后 发现源码
得知 为php_srand()和php_rand()的锅
随机数并非真正的随机
根据网上资料
佬的介绍
下载了php_mt_seed工具
然后根据第一个数 就跑出来了0-100间的种子
再在本地写程序预测
然后根据后两个数确定了
本次会话的答案
发送过去得到了flag
So_Easy
<?php
error_reporting(0);
highlight_file(__FILE__);
include "flag.php";
$login = $_GET['id'];
if(!@isset($login['s3c'])||$login['s3c'] != @md5($_SESSION['flag'])){
die('嗯...怎么不对呢?');
}else{
$unserialize_str = $_POST['s3c'];
$data_unserialize = unserialize($unserialize_str);
if($data_unserialize['user'] == 'admin' && $data_unserialize['password']=='hahahahahahaha')
{
print($flag);
}
else {
die('咱就是说大漏特漏!');
}}
在这道题里,难到的是
l
o
g
i
n
[
′
s
3
c
′
]
!
=
@
m
d
5
(
login['s3c'] != @md5(
login[′s3c′]!=@md5(_SESSION[‘flag’]
这个后面的怎么知道是什么值
最后的最后:
可见,他没开启session
那不就是说@md5($_SESSION[‘flag’]根本和服务器就没啥关系,服务器就没有分配session,
在本地var_dump()一下,直接就出来了。
后面的显然一个小序列化:
$a=['user'=>'admin','password'=>'hahahahahahaha'];
echo urlencode(serialize($a));
然后就得到flag
readMMMEEE
任意文件读取
当我们把/cancanneed?img=./static/image/111.jpg写进url并且能够进行访问时就应该明白 这是任意文件读取
此处首先有个 ./ 这个./就表明了 static就是根目录
还有我们可以往后面加无数个…/ 因为根目录的…/就是根目录
还有图片111.jpg是个图片而不是文件夹,不能cd 111.jpg的,也就是说不能直接往111.jpg后面加…/的
最终payload:
ez_php
extract函数存在的问题 变量覆盖
extract变量覆盖问题
data伪协议
最后payload:
data=1&flag=data:text/plain,1