http://123.206.31.85/ 上的几道Web题 31-38

31、appcms 这个先放放。

32、可以直接看到代码:

 <?php
highlight_file('flag.php');
$_GET['id'] = urldecode($_GET['id']);
$flag = 'flag{xxxxxxxxxxxxxxxxxx}';
if (isset($_GET['uname']) and isset($_POST['passwd'])) {
    if ($_GET['uname'] == $_POST['passwd'])

        print 'passwd can not be uname.';

    else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))

        die('Flag: '.$flag);

    else

        print 'sorry!';

}
?> 

可以看到关键是sha1()函数,查了查sha1()有一个漏洞,不能处理数组,那么就给它数组。
这里写图片描述

33、也能直接看到代码:

<?php
extract($_GET);
if (!empty($ac)){
    $f = trim(file_get_contents($fn));
    if ($ac === $f){
        echo "<p>This is flag:" ." $flag</p>";
    }else{
        echo "<p>sorry!</p>";
    }
}
?>

见到file_get_contents(),想到之前用过的方法,php://input:
这里写图片描述

34、还是进去能看到代码:

 <?php 
highlight_file('2.php');
$key='KEY{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ 
  die('key is: '.$key);
}
?> 

是关于正则表达式:
/表示开始,key和”;”表示要匹配key和;,”.”表示可以匹配任意字符,”*”表示可以匹配前面字符任意次,”{4,7}”表示匹配它前面字符最少4次,最多7次,”\/”第一个字符是转义符,所以这个就表示/,”[a-z]”表示a-z中任意一个字符,”[[:punct:]]”,表示一个ASCⅡ码符号,”/i”表示大小写不敏感。
因此我们需要这样格式:%表示一个任意字符,@表示一个ASCⅡ码符号,#表示一个a-z中任意一个。
key%key%%%%key:/%/%key#@
找这个格式随便来一个:
这里写图片描述

35、这个题貌似挂了。。。

36、这个也挂了。。。

37、这个看到只能上传图片,而且图片上传后可以访问,先是想到一句话木马??先用%00截断绕过上传??
但是不行,上传的文件会被改名,所以行不通,又试了试文件上传绕过(改content-type,属于服务端绕过的文件类型绕过),确实可以,但只能上传不能做什么(因为文件会被改名)。
。。。查了不少HTTP协议的东西,还是没有用,关于这道题,看到有大佬提到把Content-Type: multipart/form-data改成Content-Type: Multipart/form-data,会变成:
这里写图片描述
但是原理??找了半天也没找到,求解。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值