知识点:数组绕过加密,zip伪协议,无参rce
Roamphp1-Welcome
<?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
show_source(__FILE__);
}
else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
phpinfo(); // collect information from phpinfo!
}
}
sha1无法处理数组,会返回null,所以全等

Roamphp2-Myblog
观察每个页面,会发现都有个page参数,那么这个参数会不会有文件包含漏洞呢?


试试
php://filter/read=convert.base64-encode/resource=login
确实有。

login
<?php
require_once("secret.php");
mt_srand($secret_seed);
$_SESSION['password'] = mt_rand();
?>
secret.php
<?php
$secret_seed = mt_rand();
?>
看了半天也没发现有什么洞,再回到login页面。
登录的时候,会显示page=admin/user,admin/user虽然看着不像文件名,但它确实是。


两段代码:
第一段:username为Longlone,password为前两个mt_rand()产生的数,这边有个知识点要说一下如果我们删去了cookie中的PHPSESSID,那么传进去密码将不再是longlone的密码,没有cookie就找不到是哪个用户,那么服务端存的$_SESSION[‘password’])也就为空了,那我们只需要也传一个空密码按道理就可以绕过了。
简单点来说就是这边的password是随着cookie传进去的,如果cookie中为空,那么我们也传一个空密码,再后台判断中也就相同了。$_POST['password'] == $_SESSION['password']

<?php

本文介绍了多个Web安全场景下的漏洞利用技巧,包括数组绕过加密、zip伪协议利用和无参RCE。通过示例代码展示了如何利用这些技巧执行任意代码,如通过文件包含漏洞读取敏感信息,以及通过请求头操纵执行shell命令。同时,文章还讲解了PHP的$_SESSION变量理解及正则表达式的使用。
最低0.47元/天 解锁文章
625

被折叠的 条评论
为什么被折叠?



