SECCON 2017 Online
12/9-10ã®24æéãSECCONãªã³ã©ã€ã³äºéžããããŸãããæµ·å€å¢ãå«ãèš1028ããŒã ãåå ããŠããããã§ããçµæã¯53äœã§ãããåœå ããŒã ã®ãªãã§ã¯12äœãªã®ã§ã2æã«éå¬ãããåœå 決å倧äŒãžé²ãããã§ãã
putchar music - Programming 100
å顿ã¯ã€ãã®ãšããã
This one line of C program works on Linux Desktop. What is this movie's title? Please answer the flag as SECCON{MOVIES_TITLE}, replace all alphabets with capital letters, and spaces with underscores.
main(t,i,j){unsigned char p[]="###>5|(int)(t*x));}}
äžãããããœãŒã¹ãã³ã³ãã€ã«ããŸããincludeæã远å ããŠã-lm ãªãã·ã§ã³ãä»ããŠã³ã³ãã€ã«ã
#include #include
main(t,i,j){unsigned char p[]="###>5|(int)(t*x));}}
$ gcc a.c -lm
å®è¡ãããšæšæºåºåã«å€§éã®ããŒã¿ãæµããŠããŸãããããåçãããšæ ç»ã®é³æ¥œãæµããŠããŸããPCã®ç°å¢ã«ãã£ãŠé³ã鳎ã£ãã鳎ããªãã£ããïŒ
$ a.out | aplay åçäž raw ããŒã¿ 'stdin' : Unsigned 8 bit, ã¬ãŒã 8000 Hz, ã¢ãã©ã«
flag㯠SECCON{STAR_WARS}
SHA-1 is dead - Crypto 100
å顿ã¯ã€ãã®ãšããã
SHA-1 is dead
http://sha1.pwn.seccon.jp/ Upload two files satisfy following conditions:
file1 != file2 SHA1(file1) == SHA1(file2) SHA256(file1) SHA256(file2) 2017KiB 2017KiB
1KiB = 1024 bytes
SHA1è¡çªãçºçãã2ã€ã®ãã¡ã€ã«ãäœæããããã§ãã SHA1ãšããã°ãããã·ã¥è¡çªãããã¡ã€ã«ãå®éã«çæããããšè©±é¡ã«ãªã£ãä»¶ã§ããã
https://shattered.io/
SHA1ãè¡çªãããã¡ã€ã«ã¯æ¢ã«ããã®ã§ãããšã¯ãã¡ã€ã«ãµã€ãºã®æ¡ä»¶ãæºããã°OKã ããã·ã¥å€èšç®ã®ä»çµã¿ãããããã·ã¥å€ãåã2ã€ã®ãã¡ã€ã«ã«åãããŒã¿ã远èšããå Žåã远èšåŸã®ãã¡ã€ã«ã®ããã·ã¥ã¯åã³äžèŽããã¯ãã äžèšãµã€ãããè¡çªãçºçãã2ã€ã®PDFãã¡ã€ã«ãããŠã³ããŒãããŸãã
-rwxrwxrwx 1 root root 422435 12æ 9 17:12 shattered-1.pdf -rwxrwxrwx 1 root root 422435 12æ 9 17:12 shattered-2.pdf
2017KiBãã倧ãã2018KiBããå°ãããã¡ã€ã«ã欲ããã®ã§ãµã€ãºãèšç®ããã
422435 bytes / 1024 = 412 KiB (shattered.ioã®PDFãã¡ã€ã«ãµã€ãº) 2017 KiB - 412 KiB = 1605 KiB (远èšãã¹ãããŒã¿ã®ãµã€ãº)
ããšã¯é©åœãªãããŒããŒã¿ãPDFã«è¿œèšããã ãã
$ python -c "print '\xff'*1024*1605" > ff $ cat shattered-1.pdf ff > 1.pdf $ cat shattered-2.pdf ff > 2.pdf
$ ls -lrt åèš 6468 -rwxrwxrwx 1 root root 422435 12æ 9 17:12 shattered-1.pdf -rwxrwxrwx 1 root root 422435 12æ 9 17:12 shattered-2.pdf -rwxrwxrwx 1 root root 1643521 12æ 9 17:24 ff -rwxrwxrwx 1 root root 2065956 12æ 9 17:24 1.pdf -rwxrwxrwx 1 root root 2065956 12æ 9 17:25 2.pdf
$ sha1sum 1.pdf 2.pdf 82a7ab1ec5d028f3956b6fe92c8ed594bfb41d92 1.pdf 82a7ab1ec5d028f3956b6fe92c8ed594bfb41d92 2.pdf
$ sha256sum 1.pdf 2.pdf f240399f72872cccc4e24fd91431bc604b5668cf7ba7e6a1ee35ad58edd43f40 1.pdf 89873267dd5f3da340e1304409aecfc1bcbd89e5428192834f6f1cc7a6902a11 2.pdf
SHA1ãè¡çªãã2ã€ã®ãã¡ã€ã«ãåŸãããŸããããããåé¡ãµã€ãã«ãµããããããŠçµäºã flag㯠SECCON{SHA-1_1995-2017?}
Powerful_Shell - Binary 300
å顿ã¯ã€ãã®ãšããã
Crack me. powerful_shell.ps1-1fb3af91eafdbebf3b3efa3b84fcc10cfca21ab53db15c98797b500c739b0024
äžãããããã¡ã€ã«ã¯ãããªæããPower Shellã®ã¹ã¯ãªãããé£èªåãããŠããïŒ
$ECCON=""; $ECCON+=[char](3783/291); $ECCON+=[char](6690/669); $ECCON+=[char](776-740); $ECCON+=[char](381-312); $ECCON+=[char](403-289); $ECCON+=[char](-301+415); $ECCON+=[char](143-32); $ECCON+=[char](93594/821); $ECCON+=[char](626-561); $ECCON+=[char](86427/873); $ECCON+=[char](112752/972); $ECCON+=[char](43680/416); $ECCON+=[char](95127/857);
(çç¥)
$ECCON+=[char](873-863); $ECCON+=[char](721-708); $ECCON+=[char](803-793); $ECCON+=[char](10426/802); Write-Progress -Activity "Extracting Script" -status "20040" -percentComplete 99; $ECCON+=[char](520-510); Write-Progress -Completed -Activity "Extracting Script";.([ScriptBlock]::Create($ECCON))
Windowsã®ããã©ã«ãã ãšã¹ã¯ãªããå®è¡ãããªã·ãŒã§å¶éãããŠããããŸãã¯ã¹ã¯ãªãããå®è¡å¯èœã«ããããã«ãPowerShellã管çè æš©éã§èµ·åããŠä»¥äžã®ã³ãã³ããå®è¡ããã
PS C:\work> Set-ExecutionPolicy RemoteSigned
ã¹ã¯ãªããå®è¡ãããšSECCONã®ç»åã衚瀺ããããäœãã®ãã§ãã¯ã§çµäºããŠããæš¡æ§ã
é£èªåãããŠãããšãã£ãŠãæè©®ã¯ã¹ã¯ãªãããªã®ã§æåŸã®ã»ãã§evalçãªããšãããŠããã®ã§ã¯ãšæãã ããããããšãããæ¢ããŠããã³ãŒããããŠèªã¿ããããªã£ãç¶æ ã®ã³ãŒã(ãããã¯ããšæ³å®ããŠ)ãåºåããŠã¿ãã
æåŸã®è¡ã倿ŽããŠãã¡ã€ã«åºå
(倿Žå) Write-Progress -Completed -Activity "Extracting Script";.([ScriptBlock]::Create($ECCON))
(倿ŽåŸ) Write-Progress -Completed -Activity "Extracting Script";[ScriptBlock]::Create($ECCON)|Out-File -FilePath C:\work\output.ps1 -Encoding Ascii
å床å®è¡ãããšããã³ãŒããããã¹ã¯ãªãããåŸããããã¡ãªã¿ã«ãã®ã¹ã¯ãªããããããã¬ã«ããå®è¡ãæ€ç¥ãããšçµäºããããã«ãªã£ãŠããã
PS C:\work> .\powerful_shell.ps1
ãšãã£ãŠããŸã é£èªåãããŠããã®ã ãã ã·ã³ã¿ãã¯ã¹ãšã©ãŒãããã®ã§æ¹è¡ã³ãŒããè¥å¹²ä¿®æ£ãããšå®è¡ã§ããã ãŸããåŠçäžã«å®è¡ç°å¢ã®ãã§ãã¯ãããŠããã®ã§ãã®éšåãã¹ãããããŠå®è¡ãããšãã¢ãã®éµç€ããå®éã«é³ããªããããïŒ(èªåã®ç°å¢ã§ã¯ããŸããªããªãã£ã)
åŠçã®åŸåã§ã¯ãæ£ããããŒå ¥å(ãã¢ãæŒå¥)ãåºã«çæããéµã䜿ã£ãŠãXORã§ããŒã¿åŸ©å·ããŠããã
(çç¥)
$text=@" YkwRUxVXQ05DQ1NOE1sVVU4TUxdTThBBFVdDTUwTURVTThMqFldDQUwdUxVRTBNEFVdAQUwRUxtT TBEzFVdDQU8RUxdTbEwTNxVVQUNOEFEVUUwdQBVXQ0NOE1EWUUwRQRtVQ0FME1EVUU8RThdVTUNM EVMVUUwRFxdVQUNCE1MXU2JOE0gWV0oxSk1KTEIoExdBSDBOE0MVO0NKTkAoERVDSTFKThNNFUwR FBVINUFJTkAqExtBSjFKTBEoF08RVRdKO0NKTldKMUwRQBc1QUo7SlNgTBNRFVdJSEZCSkJAKBEV QUgzSE8RQxdMHTMVSDVDSExCKxEVQ0o9SkwRQxVOE0IWSDVBSkJAKBEVQUgzThBXFTdDRExAKhMV Q0oxTxEzFzVNSkxVSjNOE0EWN0NITE4oExdBSjFMEUUXNUNTbEwTURVVSExCKxEVQ0o9SkwRQxVO EzEWSDVBSkJAKBEVQUgzThAxFTdDREwTURVKMUpOECoVThNPFUo3U0pOE0gWThNEFUITQBdDTBFK F08RQBdMHRQVQUwTSBVOEEIVThNPFUNOE0oXTBFDF0wRQRtDTBFKFU4TQxZOExYVTUwTSBVMEUEX TxFOF0NCE0oXTBNCFU4QQRVBTB1KFU4TThdMESsXQ04TRBVMEUMVThNXFk4TQRVNTBNIFUwRFBdP
(çç¥)
E0QVTUwTSBVMEUYXTxFAF0NCE0oXTBNCFU4QFhVBTB1KFU4TQBdMEUIXQ04TRBVMEUAVThNDFkFM EUobTBNDFUwRFBdAThNIFUITQRdME0wVQU8RShdMHUMVThMoF0wRNhdDThNEFUwRRhVOEzEWQUwR ShtME0EVTBFGF0BOE0gVQhNDF0wTVxVBTxFKF0wdQxVOEygXTBE2FxROE10VShZOTBFTF2E= "@
$plain=@() $byteString = [System.Convert]::FromBase64String($text) $xordData = $(for ($i = 0; $i -lt $byteString.length; ) { for ($j = 0; $j -lt $f.length; $j++) { $plain+=$byteString[$i] -bxor $f[$j] $i++ if ($i -ge $byteString.Length) { $j = $f.length } } }) iex([System.Text.Encoding]::ASCII.GetString($plain))
ããŒã¹ãããŒã¯å ¥åãç §åããŠããã³ãŒãéšåãèªãã§éµãç¹å®ããã
$f="hhjhhjhjkjhjhf"
ããã«ã埩å·åŸã®ããŒã¿ããã¡ã€ã«åºåããããã«ã¹ã¯ãªãããä¿®æ£ããŠå®è¡ã
(倿Žå) iex([System.Text.Encoding]::ASCII.GetString($plain))
(倿ŽåŸ) [System.Text.Encoding]::ASCII.GetString($plain)|Out-File -FilePath C:\work\output3.ps1 -Encoding Ascii
ããããŠåŸããã埩å·åŸã®ã¹ã¯ãªããã¯ãŸã é£èªåãããŠãããã倿°åãèšå·ã«ãªã£ãŠããã®ã§ãããããã
${;}=+$();${=}=${;};${+}=++${;};${@}=++${;};${.}=++${;};${[}=++${;}; ${]}=++${;};${(}=++${;};${)}=++${;};${&}=++${;};${|}=++${;}; ${"}="["+"$(@{})"[${)}]+"$(@{})"["${}${|}"]"$(@{})"["${@}\({}"]+"\)?"[${+}]+"]"; ${;}"".("$(@{})"["${}${[}"]"$(@{})"["${}${(}"]"$(@{})"[${}]+"$(@{})"[${[}]+"$?"[${+}]+"$(@{})"[${.}]); ${;}"$(@{})"["${}${[}"]"$(@{})"[${[}]+"${;}"["${@}${)}"];"${"}${.}${(}+${"}${ (çç¥)
ãŸãæåŸã®è¡ã«çç®ããŠããã³ãŒãåŸã®ã¹ã¯ãªãããåºåããã
(倿Žå) ${;}="$(@{})"["${}${[}"]"$(@{})"[${[}]+"${;}"["${@}${)}"];"${"}${.}${(}+${"}${ (çç¥)
(倿ŽåŸ) ${;}="$(@{})"["${}${[}"]"$(@{})"[${[}]+"${;}"["${@}${)}"]; Write-Host "${"}${.}${(}+\({"}\)
åºåçµæã¯ãã¡ãããŸããŸãé£èªåãããŠãã
[CHar]36+[CHar]69+[CHar]67+[CHar]67+[CHar]79+[CHar]78+[CHar]61+[CHar]82+[CHar]101+[CHar]97+[CHar]100+[CHar]45+[CHar]72+[CHar]111+[CHar]115+[CHar]116+[CHar]32+[CHar]45+[CHar]80+[CHar]114+[CHar]111+[CHar]109+[CHar]112+[CHar]116+[CHar]32+[CHar]39+[CHar]69+[CHar]110+[CHar]116+[CHar]101+[CHar]114+[CHar]32+[CHar]116+[CHar]104+[CHar]101+[CHar]32+[CHar]112+[CHar]97+[CHar]115+[CHar]115+[CHar]119+[CHar]111+[CHar]114+[CHar]100+[CHar]39+[CHar]13+[CHar]10+[CHar]73+[CHar]102+[CHar]40+[CHar]36+[CHar]69+[CHar]67+[CHar]67+[CHar]79+[CHar]78+[CHar]32+[CHar]45+[CHar]101+[CHar]113+[CHar]32+[CHar]39+[CHar]80+[CHar]48+[CHar]119+[CHar]69+[CHar]114+[CHar]36+[CHar]72+[CHar]51+[CHar]49+[CHar]49+[CHar]39+[CHar]41+[CHar]123+[CHar]13+[CHar]10+[CHar]9+[CHar]87+[CHar]114+[CHar]105+[CHar]116+[CHar]101+[CHar]45+[CHar]72+[CHar]111+[CHar]115+[CHar]116+[CHar]32+[CHar]39+[CHar]71+[CHar]111+[CHar]111+[CHar]100+[CHar]32+[CHar]74+[CHar]111+[CHar]98+[CHar]33+[CHar]39+[CHar]59+[CHar]13+[CHar]10+[CHar]9+[CHar]87+[CHar]114+[CHar]105+[CHar]116+[CHar]101+[CHar]45+[CHar]72+[CHar]111+[CHar]115+[CHar]116+[CHar]32+[CHar]34+[CHar]83+[CHar]69+[CHar]67+[CHar]67+[CHar]79+[CHar]78+[CHar]123+[CHar]36+[CHar]69+[CHar]67+[CHar]67+[CHar]79+[CHar]78+[CHar]125+[CHar]34+[CHar]13+[CHar]10+[CHar]125|iex
å床ãæåŸã®ç®æã§é£èªåè§£é€åŸã®ã¹ã¯ãªãããåºåãããã倿Žã
å®è¡ããŠåŸãããçµæããã¡ãããããããŽãŒã«ïŒ
$ECCON=Read-Host -Prompt 'Enter the password' If($ECCON -eq 'P0wEr$H311'){ Write-Host 'Good Job!'; Write-Host "SECCON{$ECCON}" }
flag㯠SECCON{P0wEr$H311}
Ps and Qs - Crypto 200
å顿ã¯ã€ãã®ãšããã
Decrypt it. psqs1-0dd2921c9fbdb738e51639801f64164dd144d0771011a1dc3d55da6fbcb0fa02.zip (pass:seccon2017)
äžããããZipãã¡ã€ã«ã®äžèº«ã¯æå·æãšå ¬ééµ2ã€ã§ãã
Archive: psqs1-0dd2921c9fbdb738e51639801f64164dd144d0771011a1dc3d55da6fbcb0fa02.zip Length Date Time Name âââ -â -â ---- 512 12-09-17 01:33 cipher 800 12-09-17 01:33 pub1.pub 800 12-09-17 01:33 pub2.pub
$ openssl rsa -in pub1.pub -text -pubin Public-Key: (4096 bit) Modulus: 00:cf:cf:bb:ee:a7:df:14:3a:8a:c2:08:b1:aa:1d: 2f:86:54:5a:c4:cb:58:8c:94:a3:fb:1c:14:ad:91: a4:f0:b9:36:15:7c:5a:4b:86:9c:18:a8:b8:64:f4: (çç¥)
$ openssl rsa -in pub2.pub -text -pubin Public-Key: (4096 bit) Modulus: 00:bb:33:cc:7f:cc:8e:ca:f3:bf:9e:d9:5c:58:37: 92:e1:ec:6b:80:ee:87:5e:c2:06:4d:bc:f0:75:95: c8:34:49:23:bf:53:65:24:d4:e0:a7:55:74:c7:79: (çç¥)
æå·æã²ãšã€ã«å¯ŸããŠããããå ¬ééµãµãã€ãæž¡ããŠããã®ãæ°ã«ãªããŸãããšæãã€ã€èª¿ã¹ãŠãããšãããªã®ãèŠã€ããŠããŸããŸããã
https://github.com/Ganapati/RsaCtfTool
RsaCtfTool RSA tool for ctf - uncipher data from weak public key and try to recover private key Automatic selection of best attack for the given public key
äžç¬ã§çµäºãã©ãããŒã
$ ~/RsaCtfTool/RsaCtfTool.py âpublickey "*.pub" âprivate > private $ openssl rsautl -decrypt -inkey private -in cipher -out plain.txt $ cat plain.txt SECCON{1234567890ABCDEF}
flag㯠SECCON{1234567890ABCDEF}
JPEG file - Binary 100
å顿ã¯ã€ãã®ãšããã
Read this JPEG is broken. It will be fixed if you change somewhere by 1 bit.
ãã¡ã€ã«ãå£ããŠãããšèšã£ãŠããã®ã§ã修埩ããã°flagã衚瀺ããããšããããšã§ãããã
JPEG修埩ããŠããããšããããŒã«ãé©åœã«æ¢ããŠããŠå®è¡ããã ããæªãããªããŒã«ã ãšå°ãã®ã§ãããŒã«å®è¡åã«ã¹ãããã·ã§ããããšã£ãŠãããŠåŸã§æ»ããŠãããŸãããããããæã«ä»®æ³ãã·ã³ã¯äŸ¿å©ã§ãã
ãšãŠã楜ããã£ãã§ããSECCONã¯æ¯å¹Žæ¥œãã¿ã«ããŠããŠæ¬ ãããåå ããããã«ããŠããéèŠã€ãã³ãã§ããäºéžçªç Žã§ããã®ãããããã éå¶ã®ã¿ãªãããããŒã ã®ã¿ãªããããŸããã®ãããããªäººã«æè¬ã§ããããããšãããããŸããã











