TSG CTF 2024ãåã³ãSQLite of Hand, H*, Cached File Viewerã«ã¤ãã¦
æ¹ãã¦ãTSG CTF 2024ã¸ã®ãåå ãããã¨ããããã¾ãããwriteupã¨ã¯å¥ã«ãä½åããåé¡ã«ã¤ãã¦ææãï¼æ¥æ¬èªã§ã«ã¸ã¥ã¢ã«ã«ï¼ã¡ã¢æ¸ããã¦ãããã¨æãã¾ãã
åãé¢ä¿ããåé¡ã®writeupã¯ããã¡ãã«ã¾ã¨ãã¦ããã¾ã
çµå±ä½åããã¦ãã¾ã£ã
æ¨å¹´ã§TSG CTFã§ã®ä½åã¯æå¾ã«ãããã¨æã£ã¦ãã¾ããã *1
ããããã°ãTSG CTFã§åãä½åããã®ã¯æå¾ã«ããäºå®ï¼LIVE CTFå«ãï¼
— mora (@moratorium08) November 6, 2023
å®éããTSGã«ããæéãé·ããªãã¨æã£ã¦ããã®ã§ãé©åãªç§»è¡ã¯è¡ãããã¹ãã§ãããå»å¹´ã®CTFã¨ããèªèã ã£ãã®ã§ã å ãã¦ãDè«æåºç· åã12æã®é ã«ãããã¨ãªã©ã念é ã«ç½®ãã¨ããã¡ãã«éä¸ãããæ°æã¡ãããã¾ããã
å®éåãä½åããªãã¦ãï¼ã¡ãã£ã¨äººæãè¶³ãã¦ããªãã£ããããããªãã§ããï¼CTFã¨ãã¦ã¯ä½ãåé¡ãªãã£ãã¨æãã¾ãã ãªã®ã§ãä½è¨ãªãä¸è©±ãããã¨ããé¨åãããã¾ãã ãã ãä»å¹´ã®TSG CTFã®åªåãã¼ã ã¯ãSEC CON CTF International Finalsã«qualifyãããç¹å ¸ä»ãã¨ãããã¨ããã£ã¦ã"å¼·ã"ãã¼ã ãé©åã«åã¦ãCTFãæã¾ããã¨ããç¶æ³ããã *2ãï¼é±éåã®ã¿ã¤ãã³ã°ã§ã®ä½åç¶æ³ãªã©ãç·åçã«åæ¡ããã¨ããããªãã«é£ããåé¡ãè¤æ°è¿½å ããã¨ã¨ãã«ãpwnçãå¿ è¦ãªåé¡ãè¤æ°ï¼çµæä½ããpwnã¯1åã§ããã...ï¼ä½ã£ã¦ããæ¹ã人é¡ã幸ç¦ã«ãªãã¨æã£ãã®ã§ãä½åãããã¨ã«ãã¾ãããçµå±ããããå·®ãåºãã¾ãããã¨ããã¦ãã¾ãã®ã§ãåã¯æ©ããµã¼ã¯ã«ãå»ã£ãã»ãããã
çµå±ããã1é±éã»ã©ã¯å ¨ã¦ãå®å ¨ã«ç¡è¦ãã¦ä½åãã¦ããã®ã§ã人çãµã¤ãã«ãè¥å¹²ã®æ¯éãåºã¦ãã¦ãã¾ãã
SQLite of Hand (w/ mikit)
Sleight of Handã§æåã£ã¦æå³ããããpwnçåé¡ã§ããSQLite3ã®ãã¤ãã³ã¼ãã好ãã«æ¸ããã®ã§ã·ã§ã«ãèµ·åãã¦ãã ããã以ä¸ã å人çã«ã¯Pythonã¨ãOCamlã¨ãLuaã¨ãPHPã¨ãããããé常ã®è¨èªå¦çç³»ãpwnãããããã¡ãã£ã¨ãããããã£ãã¨æãï¼SQLãå¦çããã®ã«ããç¨åº¦ç¹åãã¦ããã®ã§VMãã¡ããã©ããæãã«ä¸ä¾¿ã§ãã¨ã¯ããSQLite3ã®ã³ã¼ããã¼ã¹ã¯å¤§ãã¦ãã«ããªãã®ã§ãªãµã¼ãã大å¤ã§ã¯ãªãï¼ããããã¯ãã ã®å¶ç¶ã§ãã
ISUCONå¾ã®æè¦ªä¼ä¸ã«mikitãããããSQLite3ã£ã¦å é¨ã§ãã¤ãã³ã¼ãã¤ã³ã¿ããªã¿ã«ãªã£ã¦ãã¦ãããpwnããããããããï¼ãã£ã¦è¨ã£ã¦ããã®ã§ãåé¡ã«ãã¾ãããISUCONã¨mikitãããããã¨ã... *3
ããã«é¢é£ãã¦å顿°ãä¸è¶³ãã¦ããrevã¸ã£ã³ã«ãå¢ããããã«ãSQLite3ã®ãã¤ãã³ã¼ãã®revãåºãããã§ãããå®è¡å¯è½ãªãã¤ããªãé ãå½¢ã«ã¯ãªã£ã¦ããªãã£ãã®ã§ãæ å ±ãæ¬å½ã«è¶³ãã¦ããã®ãã¯å®ã¯æå¾ã¾ã§ä¸å®ã§ãææ ããã¡ããã¡ãã ã£ãã®ã§ãarataãããæåã«è§£ãã¦ãããã¨ãã¯æ¶ãæ¢ã¾ããªããªãã¾ããï¼ãããã¨ã...ï¼
H*
ãunsoundãªHaskellåã篩åã·ã¹ãã ããå®è£ ãã¦åºãã¨ãããã¢ã¤ãã¢å®ç¾ã®ããã®å®è£ ãã´ãªã´ãªãªåé¡ãå®ã¯å®è£ è¨èªãOCamlã¨ããæå³ä¸æãªè¨èª & ããã¯ã¨ã³ãã§ä½¿ç¨ããã¦ããè¨èªãããã«æå³ä¸æãªF*åã³Haskellã§ãããã¨ãé¤ãã°ããã¾ã§é£ãããã¨ã¯ãã¦ããããåã«ãã¼ã¹ãã¦ãF*ã§refinement type checkãè¡ã£ãããã§ãHaskellã«å¤æãã¦ã³ã³ãã¤ã«&å®è¡ãã¦ããã ãã *4 æ³å®ã¯ãOCamlã¨Haskellã®evaluation orderã®éããexploitãããã®ã§ã以ä¸ã®ããã°ã©ã ãOCamlã ã¨çºæ£ããã®ã§flagã¸reachableãªpathãåå¨ããsafeã¨ãã¦å¤å®ãããããHaskellã ã¨é å»¶è©ä¾¡ã®ãããã§çºæ£ããflagã表示ãããã
let rec loop:: x::Integer{1>0} -> Dv(x::Integer{0>1}) = \x -> loop x in let n = loop 1 in flag 1
æ¬å½ã¯ããå°ãé£ãããããã£ãããåãã¨ããå®çãF*ã§ç¤ºãæ¹æ³ãåãããªãã£ãã®ã§è«¦ãã¾ãããã§ãããã¾ãåé¡ã«ãã¾ãï¼ãããï¼
ãã ãå¦çç³»ãå°ãfancyã«ãããã¦å²ãç®ãå ¥ããã°ã£ããã«ãããéæ³å®è§£ãçãã§ãã¾ã£ã¦æ³£ãã¾ãããä½è ãHaskellãã»ã¨ãã©æ¸ãããã¨ããªãã®ããããã¾ãã
Cached File Viewer (w/azaika )
SQLiteã®åé¡ãä½åãã¦ããããªããç 究室ã«ãã azaika ããã«ããããããã¿ä¹é£ãããã¨ããéã£ã¦ããã¢ã¤ãã¢ã å·å¤å·ã§è°è«ããªãããï¼åã°åæã«ï¼åé¡ã«ããããªã®ã§ããã¯ã»ã¨ãã©azaikaåã¨è¨ã£ã¦ããã 話ã¯C++ãã¿ã§ããå¤ãã®å ´åï¼SSOãå¹ããªãç¨åº¦ã«é·ãæååã®ã¨ãã«ã¯ï¼é¡å¨åããªããããªstring_viewã®lifetimeéåãã¡ããã¨è¦ã¤ãã¦ãexploitã§ãã¾ããï¼ãã¨ããåé¡ã æ³å®è§£ã§ãã£ã¦ã以ä¸ãããã ããªã®ã§ãeasyã¿ã°ãã¤ããããéæ³å®è§£ããã®12 solvesã§ä»ã®è§£ããæ¹ãè¦ã¦ããã¨ãé£æåº¦æ¨å®ããããã¹ã£ããããããªã
$ nc 34.146.186.1 21005 1. load_file 2. read 3. bye choice > 1 index > 1 filename > /var/lib/dpkg/info/libdb5.3t64:amd64.shlibs Read 22 bytes. 1. load_file 2. read 3. bye choice > 1 index > 1 filename > flag Read 22 bytes. content: TSGCTF{hQAz-yXc6fLoyK}
æååºããåé¡ã®ãã¹ã¯ã¾ãã§ç³ã訳ãªãã¦ããã®ä¸ã§2ã«ãæ®ã£ã¦ã /dev/fd/..
ã®ãã¹ã¯ä½å¹´CTFããã£ã¦ããã®ã§ããããï¼ã¿ãããªãã¹ã ã£ãçµããã
ã¾ãã§ãdiscordè¦ã¦ããããkeymoonãããå®å
¨ã«é¡æãçè§£ãã¦è§£ãã¦ããã¦ããã®ã§ happy happy happy~ã ã¡ãªã¿ã«ããã®åé¡ãbruteforceãªãã§ç¾ããè§£ãã«ã¯22ãã¤ãã®regular fileãå¿
è¦ãªãã§ãããkeymoonãã㨠åã /var/lib/dpkg/info/libdb5.3t64:amd64.shlibs
ãåã使ãã¾ããã
*1:ã¡ãªã¿ã«ããã§ã«2度LIVE CTFã§ãããåæ ã«ãã¦ã¯ãããã«ã¹ã§ã
*2:ããã¯åäººã®ææ³ã®é¨åãå ¥ããå¼·ããã¼ã ã¯pwnçããã人éããã
*3:ã¡ãªã¿ã«ISUCONã§ã¯ãä»å¹´ãTã·ã£ãåå (23ä½?)ã ã£ãã®ã§ãããã§7å¹´é£ç¶ãããããã¼ã åä½ãããã¨ã..
*4:ããããå ¨é¨ã¾ã¨ããDockerã¤ã¡ã¼ã¸ãä½ãã®ãå²ã¨ããã©ãã£ã