WEB攻防世界5

Web_php_include

源码如下:

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>

文件包含。
strstr(str1,str2) :函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。
strstr可以用大小写绕过。
解法一:
在这里插入图片描述
在这里插入图片描述
cat这个文件,得到flag
在这里插入图片描述
方法二:
这里过滤了php://但还可以用别的,
返回文件路径,
$_SERVER[‘DOCUMENT_ROOT’]:这个值是网站的根目录设置成什么就是什么。
在这里插入图片描述
在这里插入图片描述
读出当前目录文件,再用file_get_contents就可以读到里面的内容了。
file_get_contents() 函数把整个文件读入一个字符串中。

i-got-id-200

打开题目浏览有三个链接,发现其中有一个可以进行上传。
而这里上传会将文件内容打印出来。
在这里插入图片描述
这里网页都是.pl文件,搜索发现是用perl编写的网页,
查了prel上传后台代码,

perl use strict; use warnings; use CGI; 
my $cgi= CGI->new; 
if ( $cgi->upload( 'file' ) ) { my $file= $cgi->param( 'file' ); 
while ( <$file> ) 
{ print "$_"; }}

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的file变量中,我们传入一个argv文件那么Perl会将传入的参数作为文件名读出来。
利用:在上传的文件前加一个文件上传项argv。
ARGV是PERL默认用来接收参数的数组,不管脚本里有没有把它写出来,它始终是存在的。
在这里插入图片描述
猜测文件为flag,抓包构造,得到flag.
在这里插入图片描述

Website

发现一个登录界面,注册
在这里插入图片描述
在这里插入图片描述
点击getflag提示只有admin访问
在这里插入图片描述
只能尝试伪造admin了
抓包,发现
在这里插入图片描述

这里csrftoken为了防止跨站域请求伪造,有的网站请求中会加入这个验证,在登录及登录后续的操作都会让你携带csrftoken,问题在于csrftoken每次刷新界面都要发生变化,所以查到csrf生成的位置就是关键所在,有的网站会把csrftoken放在html代码中返回给前端,这种找起来会比较简单

这里csrftoken已经利用了,但username还是需要修改
分析几个常见后台发现有个test.php
在这里插入图片描述
和上面的username替换,发现admin的csrftoken
在这里插入图片描述
再去访问getflag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值