XCTF 高校战“疫”网络安全分享赛 WEB_WP

XCTF 高校战“疫”网络安全分享赛

easy_trick_gzmtu

  • 首先说一下这个题的脑洞确实强
  • 打开题目后,是一个好看的博客,源码里提示?time=Y或者?time=2020

8SLTc6.png

  • 测试的存在盲注,但是当构造payload的时候,一直是500,猜测是后端对提交的数据进行了过滤,试了n种姿势,都fuzz不出来,想了好久,最后才发现是,每个字符前加上\就行了(orzzzzzzzzzz
  • 接下来就是盲注脚本一把梭
  • 爆出的最后数据如下
数据库名:trick
表名:admin,content
列名:id,username,passwd,url,id,content,createtime
admin表内容:
	username:admin
	password:20200202goodluck  //goodluck个锤子
	url:/eGlhb2xldW5n
  • 发现了另一个链接,套娃。。。。。
  • 访问后,发现是要登陆的,用爆出来的登陆一下

wen1_login

  • 发现可以读取文件
    在这里插入图片描述
  • 在源码里又发现提示:<!--/eGlhb2xldW5n/eGlhb2xldW5nLnBocA==.php-->
    在这里插入图片描述
  • 尝试读一下,回显:请从本地访问
  • 本来以为是XFF之类的头部伪造,后来才发现想错了(给的提示就有歧义
  • 使用file://localhost/var/www/html/eGlhb2xldW5n/eGlhb2xldW5nLnBocA==.php(用127.0.0.1好像也不行,后来读了源码才知道,后台只写了localhost,有点崩溃
  • 读出的eGlhb2xldW5n/eGlhb2xldW5nLnBocA==.php

<?php

class trick{
   
	public $gf;
	public function content_to_file($content){
   	
		$passwd = $_GET['pass'];
		if(preg_match('/^[a-z]+\.passwd$/m',$passwd)) 
	{
    

		if(strpos($passwd,"20200202")){
   
			echo file_get_contents("/".$content);

		}

		 } 
		}
	public function aiisc_to_chr($number){
   
		if(strlen($number)>2){
   
		$str = "";
		 $number = str_split($number,2);
		 foreach ($number as $num ) {
   
		 	$str = $str .chr($num);
		 }
		 return strtolower($str);
		}
		return chr($number);
	}
	public function calc(){
   
		$gf=$this->gf;
		if(!preg_match('/[a-zA-z0-9]|\&|\^|#|\$|%/', $gf)){
   
		  	eval('$content='.$gf.';');
		  	$content =  $this->aiisc_to_chr($content); 
		  	return $content;
		}
	}
	public function __destruct(){
   
        $this->content_to_file($this->calc());
        
    }
	
}
unserialize((base64_decode($_GET['code'])));

?>
  • 再读一下他的check文件
<?php
include("../conn.php");
if(empty($_SESSION['login'])){
   
	die('请登录!');
}
if(isset($_GET['url'])){
   
$url = $_GET['url'];
$parts = parse_url($url);
if(empty($parts['host']) || $parts['host'] != 'localhost') {
   
    die('请从本地访问');
}

	if(!preg_match(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值