HGAME2019 – Week 1 Write-up

web

谁吃了我的flag [50]

根据题目提示 “没关机就睡了”,可能存在 vim 交换文件泄露,下载 .index.html.swp,执行 vim -r index.html 即可恢复文件得到 flag

Flag: hgame{3eek_diScl0Sure_fRom+wEbsit@}

换头大作战 [100]

测试表单提交,返回 “request method is error.I think POST is better”;
将参数 want 改为 POST 方式提交,返回 “only localhost can get flag”;
添加请求头 X-Forwarded-For: 127.0.0.1,返回 “please use Waterfox/50.0”;
添加请求头 User-Agent: aaa Waterfox/50.0 aaa,返回 “the requests should referer from www.bilibili.com”;
添加请求头 Referer: www.bilibili.com,返回 flag

Flag: hgame{hTTp_HeaDeR_iS_Ez}

very easy web [100]

php 代码审计

<?php
error_reporting(0);
include("flag.php");

if(strpos("vidar",$_GET['id'])!==FALSE)
  die("<p>干巴爹</p>");

$_GET['id'] = urldecode($_GET['id']);
if($_GET['id'] === "vidar")
{
  echo $flag;
}
highlight_file(__FILE__);
?>

“$_GET[‘id’]” 会对 id 参数进行一次 URLDecode( URL 解码),对字符串 “vidar” 进行两次 URL 编码,得到 “%25%37%36%25%36%39%25%36%34%25%36%31%25%37%32”,即可绕过判断

提交 GET 请求,返回 flag

Flag: hgame{urlDecode_Is_GoOd}

can u find me? [100]

善用浏览器 F12 工具(或 curl)

查看 HTML 源码,得到 “<a href=”f12.php”></a>”,访问 f12.php;
查看 HTTP 响应头,得到 “password: woyaoflag”,根据页面提示“please post password to me! I will open the gate for you!”,提交 POST 请求 password=woyaoflag
查看 HTML 源码,得到 “<a href=’iamflag.php’> click me to get flag</a>”,访问 iamflag.php;
查看网络流量中 iamflag.php 的 HTML 源码,得到 flag

Flag: hgame{f12_1s_aMazIng111}

misc

Hidden Image in LSB [50]

图片 LSB,使用 Stegsolve 打开图片,切到 Red plane 1 等视图,即可得到 flag

Flag: hgame{LSB_is_easy_for_u}

打字机 [50]

脑洞题,猜字符

Flag: hgame{My_vi0let_tyPewRiter}

Broken Chest [50]

打开压缩包,查看注释,得到密码 “S0mETh1ng_U5efuL”,用密码解压 flag.txt 即刻得到 flag

Flag: hgame{Cra2y_D1aM0nd}

Try [100]

使用 wireshark 或 fiddler 打开抓包文件,dump 出 dec.zip 并解压;
根据 password.txt 提示 “hgame********”,用 ARCHPR 掩码模式爆破 open-it.zip,得到密码 “hgame25839421”;
解压 open-it.zip,得到 1.jpg,使用 binwalk 分析发现存在压缩包,使用 -e 参数提取或直接将扩展名改为 .zip ;
解压 1.docx 需要密码,使用十六进制编辑器打开,分析后可知是伪加密,搜索十六进制字节 “50 4B 01 02”,将之后的加密标志位 “09 00” 改为 “00 00” 保存;
解压出 1.docx,打开发现空白无字,将文件作为 zip 文件解压,打开 word/document.xml 文件,得到 flag

Flag: hgame{59d28413e36019861498e823f3f41406}

crypto

Mix [50]

多重古典密码

摩斯电码解码,得到 “744B735F6D6F7944716B7B6251663430657D”;
十六进制转字符串,得到 “tKs_moyDqk{bQf40e}”;
栅栏密码解码,取最像 flag 格式的结果 “tsmyq{Q4eK_oDkbf0}”;
凯撒密码解码,得到 flag

Flag: hgame{E4sY_cRypt0}

perfect_secrecy! [100]

OTP 即 One-Time Password,由于将明文分为多段使用同个口令加密并分别输出密文,可以进行破解

可使用 Jwomers/many-time-pad-attack 的 python 脚本

Flag: hgame{OTP_is_not_safe_if_more_than_once}

Base全家 [50]

真·全家老小

使用 python 不断尝试,肉眼识别新得到的字符串的格式,最后可以解出 “base58 : 2BAja2VqXoHi9Lo5kfQZBPjq1EmZHGEudM5JyDPREPmS3CxrpB8BnC”,进行 base58 解码即可得到 flag

#!/usr/bin/env python2
from base64 import b32decode, b64decode
print(b32decode(b64decode(b64decode(b64decode(b32decode(b64decode(b64decode(b32decode(b32decode(b64decode(b64decode(enc)).decode('hex').decode('hex').decode('hex')).decode('hex'))).decode('hex')).decode('hex').decode('hex').decode('hex').decode('hex')))))))

Flag: hgame{40ca78cde14458da697066eb4cc7daf6}

分类: CTF信息安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注