脆弱性から学ぶ Webセキュリティ Part2/study-web-security-from-vulnerability2
by
hypermkt
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
੬ऑੑ͔ΒֶͿ WebηΩϡϦςΟ Part 2 όʔνʔ @hypermkt 2019.12.01 PHPΧϯϑΝϨϯε 1
Slide 2
Slide 2 text
ࣗݾհ • όʔνʔ / @hypermkt • ιϑτΣΞΤϯδχΞ • [‘PHPer’, ‘Laravel’, ‘Vue.js’] • https://blog.hypermkt.jp/ 2
Slide 3
Slide 3 text
2019/11/18ൃച Software Design 201912݄߸ʹॳدߘ͠·ͨ͠!!! 3
Slide 4
Slide 4 text
͡Ίʹ
Slide 5
Slide 5 text
ຊτʔΫ͕ఏڙ͢Δ͜ͱ • ΤϯδχΞ͕WebηΩϡϦςΟΛֶͿඞཁੑ • ੬ऑੑͷ֓ཁͱରࡦ 5
Slide 6
Slide 6 text
ຊτʔΫ͕ఏڙ͠ͳ͍͜ͱ • ֎෦੬ऑੑஅ੬ऑੑݕπʔϧʹ͍ͭͯ • ιϑτΣΞɾΠϯϑϥͷ੬ऑੑରࡦ 6
Slide 7
Slide 7 text
ຊτʔΫͷରऀ • WebΞϓϦέʔγϣϯΤϯδχΞ(αʔόʔαΠυ) • ॳ৺ऀʙதڃऀ • WebηΩϡϦςΟʹڵຯ͕͋Δ • αʔϏεɾγεςϜΛकΓ͍ͨํ 7
Slide 8
Slide 8 text
օ͞Μʹ࣋ͪؼͬͯཉ͍͠ͷ • ੬ऑੑͷո͍͍͠ 8
Slide 9
Slide 9 text
࣍ 1. ΤϯδχΞ͕WebηΩϡϦςΟΛֶͿඞཁੑ 2. ੬ऑੑ͔ΒֶͿWebηΩϡϦςΟ 3. ࢀߟɾҾ༻ࢿྉ 4. ·ͱΊ 9
Slide 10
Slide 10 text
Part 2…?
Slide 11
Slide 11 text
੬ऑੑ͔ΒֶͿWebηΩϡϦςΟ in PHPΧϯϑΝϨϯεԭೄ2019 11 IUUQTTQFBLFSEFDLDPNIZQFSNLUTUVEZXFCTFDVSJUZGSPNWVMOFSBCJMJUZ Part 1 ※ ͋ͱ͚ͮ!!
Slide 12
Slide 12 text
PHPΧϯϑΝϨϯεԭೄ2019Ͱ • SQLΠϯδΣΫγϣϯ • ΫϩεαΠτɾεΫϦϓςΟϯά • CSRF • ʹ͍͓ͭͯ͠·ͨ͠! 12
Slide 13
Slide 13 text
ΤϯδχΞ͕WebηΩϡϦςΟΛ ֶͿඞཁੑ
Slide 14
Slide 14 text
զʑͷγεςϜɾαʔϏε ৗʹૂΘΕ͍ͯΔ
Slide 15
Slide 15 text
ۙʹXSS੬ऑੑ͕ٸ૿ 15 ग़య*1" ใॲཧػߏ ιϑτΣΞͷ੬ऑੑؔ࿈ใʹؔ͢Δಧग़ঢ়گ<ୈ࢛ظʢ݄ʙ݄ʣ> IUUQTXXXJQBHPKQpMFTQEG
Slide 16
Slide 16 text
੬ऑੑͷڴҖ • ݸਓใͷӾཡ • WebαΠτͷվ͟Μ • Πϧεײછ • ผͷར༻ऀͷͳΓ͢·͠ • WebαΠτΛར༻ෆՄʹ͢Δ • ϨϐϡςʔγϣϯϦεΫ(اۀʹର͢ΔϚΠφεධՁʣ • ܦࡁతଛࣦ 16
Slide 17
Slide 17 text
੬ऑੑͱ
Slide 18
Slide 18 text
ιϑτΣΞγεςϜΛѱ༻Ͱ͖Δόά ੬ऑੑͱ
Slide 19
Slide 19 text
ιϑτΣΞγεςϜΛѱ༻Ͱ͖Δόά ੬ऑੑͱ ͭ·Γզʑ։ൃऀʹ࡞ΒΕ͍ͯΔ
Slide 20
Slide 20 text
ͳͥ։ൃऀ੬ऑੑΛ࡞ͬͯ͠·͏ͷ͔ʁ 20
Slide 21
Slide 21 text
ͳͥ։ൃऀ੬ऑੑΛ࡞ͬͯ͠·͏ͷ͔ʁ • ੬ऑੑʹؔ͢Δࣝෆ • ΞϓϦέʔγϣϯઃܭෆ 21
Slide 22
Slide 22 text
Ͳ͏ͨ͠Β ҆શͳΞϓϦέʔγϣϯͷ։ൃ͕ Ͱ͖Δ͔
Slide 23
Slide 23 text
੬ऑੑͷ֓ཁɾڴҖɾରࡦʹ ͍ͭͯΔ͜ͱ
Slide 24
Slide 24 text
੬ऑੑʹ͍ͭͯΔ͜ͱͰɺ ҆શͳWebΞϓϦέʔγϣϯ։ൃ ͕Ͱ͖ΔΑ͏ʹͳΔ
Slide 25
Slide 25 text
ҰॹʹWebηΩϡϦςΟΛ ֶΜͰ͍͖·͠ΐ͏!
Slide 26
Slide 26 text
੬ऑੑ͔ΒֶͿWebηΩϡϦςΟ
Slide 27
Slide 27 text
ੈͷதʹ༷ʑͳ੬ऑੑ͕͋Δ • SQLΠϯδΣΫγϣϯ • ΫϩεαΠτεΫϦϓςΟϯά • CSRF • σΟϨΫτϦτϥόʔαϧ • OSίϚϯυɾΠϯδΣΫγϣϯ • ηογϣϯཧͷෆඋ • HTTP/ϝʔϧϔομʔΠϯδΣΫγϣϯ • ΞΫηε੍ޚೝՄ੍ޚͷܽམ • ͳͲ 27
Slide 28
Slide 28 text
ࠓҎԼ3Λղઆ͠·͢ • SQLΠϯδΣΫγϣϯ • ΫϩεαΠτεΫϦϓςΟϯά • CSRF • σΟϨΫτϦτϥόʔαϧ • OSίϚϯυɾΠϯδΣΫγϣϯ • ηογϣϯཧͷෆඋ • HTTP/ϝʔϧϔομʔΠϯδΣΫγϣϯ • ΞΫηε੍ޚೝՄ੍ޚͷܽམ • ͳͲ 28
Slide 29
Slide 29 text
੬ऑੑରࡦͷߏ͑
Slide 30
Slide 30 text
੬ऑੑͷରࡦํ๏̎௨Γ • ࠜຊతղܾ • อݥతରࡦ 30
Slide 31
Slide 31 text
• ࠜຊతղܾ • ੬ऑੑΛ࡞Γࠐ·ͳ͍࣮Λ࣮ݱ͢Δํ๏ • ੬ऑੑΛૂͬͨ߈ܸΛແޮԽ͢Δ • อݥతରࡦ • ੬ऑੑΛૂͬͨ߈ܸʹΑΔӨڹΛܰݮ͢Δํ๏ • ੬ऑੑͷݪҼΛແ͘͢ͷͰͳ͍ 31
Slide 32
Slide 32 text
ͲͪΒΛબ͖͔͢ʁ
Slide 33
Slide 33 text
ঢ়گʹԠͯ͡அΛ͢Δ • جຊతʹࠜຊతղܾͰ੬ऑੑΛແޮԽ͢Δͷ͕ཧత • ୠ͠ӡ༻தͷΞϓϦέʔγϣϯʹ͓͍ͯɺ࣌ؒɾϦιʔεɾ Өڹൣғ͔Β͙͢ʹࠜຊతղܾ͕࣮ࢪͰ͖ͳ͍߹ʹ อݥతରࡦఆରԠͱͯ͠༗ޮ 33
Slide 34
Slide 34 text
͍͖ͬͯ·͠ΐ͏
Slide 35
Slide 35 text
σΟϨΫτϦɾτϥόʔαϧ Directory Traversal
Slide 36
Slide 36 text
σΟϨΫτϦɾτϥόʔαϧͱ • ϑΝΠϧ໊ͷࢦఆͷ࣮ʹ͕͋Δ߹ʹɺ ߈ܸऀʹҙͷϑΝΠϧ͕ࢦఆ͞Εɺ ॏཁͳϑΝΠϧ͕Ӿཡɾআ͞Εͯ͠·͏੬ऑੑ 36 ੬ऑੑͷ͋ΔαΠτ ᶃෆਖ਼ϦΫΤετΛ ૹ৴ 8FCαʔόʔ ᶄॏཁϑΝΠϧ͕ Ӿཡ͞Εͯ͠·͏ pMFFUDQBTTXE ߈ܸऀ
Slide 37
Slide 37 text
ڴҖ • ใ࿙͍͑ • ॏཁͳϑΝΠϧ͕Ӿཡɾฤूɾআ͞ΕΔ 37
Slide 38
Slide 38 text
ݪҼ • ϑΝΠϧ໊ͱͯ͠ઈରύεɾ૬ରύεͷܗͰ ҟͳΔσΟϨΫτϦΛࢦఆͰ͖Δ • ΈཱͯͨϑΝΠϧʹର͢ΔΞΫηεՄ൱ͷνΣοΫΛ ͍ͯ͠ͳ͍ 38
Slide 39
Slide 39 text
39 σΟϨΫτϦɾτϥόʔαϧྫ ೖྗύϥϝʔλʔΛͦͷ··͍ͯ͠Δ ߈ܸྫ ӾཡͰ͖͍͚ͯͳ͍ϑΝΠϧ͕ ӾཡͰ͖͍ͯΔ!!
Slide 40
Slide 40 text
Ӿཡ͞ΕͨΒࠔΔϑΝΠϧɺͨ͘͞Μ͋Γ·͢ΑͶ…. • /etc/hosts • /etc/passwd • wp-config.php • my.cnf • ϩάϑΝΠϧ • ͳͲͳͲ… 40
Slide 41
Slide 41 text
ո͍͍͠ • ֎෦ύϥϝʔλʔ͔ΒϑΝΠϧ໊Λ࣮͕͋͢Δͱո ͍͠ 41
Slide 42
Slide 42 text
ࠜຊతղܾ • ֎෦͔ΒϑΝΠϧ໊Λࢦఆ͢Δ༷Λආ͚Δ • ྫʣ෦తʹϑΝΠϧ໊Λݻఆʹ͢Δ • ϑΝΠϧ໊ʹσΟϨΫτϦؚ໊͕·Εͳ͍Α͏ʹ͢Δ • ྫʣ 42 ϙΠϯτ!
Slide 43
Slide 43 text
อݥతରࡦ • ϑΝΠϧ໊Λӳࣈʹݶఆͯ͠ɺσΟϨΫτϦɾτϥόʔαϧʹ ༻͍ΒΕΔه߸จࣈΛ༻ෆՄʹ͢Δ 43 ϙΠϯτ!
Slide 44
Slide 44 text
OSίϚϯυɾΠϯδΣΫγϣϯ OS Command Injection
Slide 45
Slide 45 text
OSίϚϯυΠϯδΣΫγϣϯͱ • ֎෦͔Βͷ߈ܸʹΑΓɺαʔόʔͷOSίϚϯυ͕࣮ߦ ͞Εͯ͠·͏ 45 ੬ऑੑͷ͋ΔαΠτ ᶃෆਖ਼ϦΫΤετΛ ૹ৴ 8FCαʔόʔ ᶄ04ίϚϯυ͕ ࣮ߦ͞ΕΔ IPHF!IPHFDPNSNGVHBJNQPSUBOUpMF ߈ܸऀ
Slide 46
Slide 46 text
ڴҖ • ใ࿙͍͑ • ॏཁͳϑΝΠϧ͕Ӿཡɾฤूɾআ͞ΕΔ • WebαΠτΛར༻ෆՄʹ͢Δ • ผαʔόʔͷ߈ܸͷ౿Έʹ͞ΕΔ 46
Slide 47
Slide 47 text
ݪҼ • OSͷγΣϧݺͼग़͕͠Ͱ͖Δؔʹɺෆਖ਼ͳίϚϯυ ͕ೖ͞Εͯ͠·͏ 47
Slide 48
Slide 48 text
OSίϚϯυΠϯδΣΫγϣϯྫ • ݱࡏϑΝΠϧ͕༗ΔॴʹσΟϨΫτϦΛ࡞͢Δ ϓϩάϥϜ͕͋Δ 48 ೖྗύϥϝʔλʔΛͦͷ··͍ͯ͠Δ!!
Slide 49
Slide 49 text
49 ೖྗύϥϝʔλʔΛͦͷ··͍ͯ͠Δ!! • ෆਖ਼ͳೖྗྫɿ • ࣮ߦ͞ΕΔίϚϯυɿ ηϛίϩϯʮ;ʯ Λར༻ͯ͠LinuxίϚϯυΛ ࿈ଓ࣮ͯ͠ߦͤ͞Δ OFXEJSSNFUDIPTUT TZTUFN lNLEJSQWBSXXXBQQOFXEJSSNFUDIPTUTz ຊʹϑΝΠϧ͕আ͞ΕΔ…
Slide 50
Slide 50 text
ةݥ͗͢Δ…
Slide 51
Slide 51 text
γΣϧݺͼग़͠ػೳ͕͋ΔPHPؔ • system • exec • passthru • shell_exec • popen 51
Slide 52
Slide 52 text
ո͍͍͠ • PHPͷγΣϧݺͼग़͕͠ՄೳͳؔΛ༻͍ͯ͠Δ 52 • system • exec • passthru • shell_exec • popen
Slide 53
Slide 53 text
ࠜຊతղܾᶃ • γΣϧݺͼग़͠ػೳͷ͋ΔPHPؔΛ༻͠ͳ͍ • OSίϚϯυΛ࣮ߦ͠ͳ͍࣮ํ๏Λબ͢Δ • ྫʣOSίϚϯυͷ mail sendmail Λ༻ͤͣ PHPͷmb_send_mailؔΛ༻͢Δ 53
Slide 54
Slide 54 text
ࠜຊతղܾᶄ • OSίϚϯυʹ͢ύϥϝʔλʔΛΤεέʔϓ͢Δ͜ͱ ʹΑΓɺҰͭͷจࣈྻͱͯ͠ΛͤΔͷͰ҆શʹͳΔ • PHPͰɺescapeshellarg Λ༻͢Δ 54
Slide 55
Slide 55 text
อݥతରࡦ • ύϥϝʔλʔͷݕূ • ҾΛݫີʹνΣοΫͯ͠ɺڐՄͨ͠ύϥϝʔλʔͷΈ Λ௨͢ 55
Slide 56
Slide 56 text
ηογϣϯཧͷෆඋ
Slide 57
Slide 57 text
ηογϣϯཧͷෆඋͱ • ηογϣϯͷൃߦͱཧʹෆඋ͕͋߹ʹൃੜ͢Δ੬ऑ ੑ 57
Slide 58
Slide 58 text
߈ܸྫ • ηογϣϯϋΠδϟοΫ • ηογϣϯIDͷݻఆԽ / ผ໊: Session Fixation 58
Slide 59
Slide 59 text
ηογϣϯϋΠδϟοΫͱ • ηογϣϯIDΛԿΒ͔ͷํ๏Ͱ౪ΈɺଞਓʹͳΓ͢·͢͜ͱ 59 ߈ܸऀ ར༻ऀ ੬ऑੑͷ͋ΔαΠτ ᶃ߈ܸεΫϦϓτΛ ࠐΉ ᶄ੬ऑੑͷ͋ΔαΠτʹ ΞΫηε͢Δ ᶅηογϣϯ*%Λ౪Έग़͠ ᶆΓ͢·͠ϩάΠϯ
Slide 60
Slide 60 text
ηογϣϯIDͷݻఆԽ߈ܸ • ߈ܸऀ͕औಘͨ͠ηογϣϯIDΛαΠτͷ੬ऑੑΛར༻ͯ͠ɺ Ϣʔβʔʹނҙʹઃఆͤ͞Δɻར༻ऀ͕ϩάΠϯ͢Δ͜ͱͰɺ ߈ܸऀͷͳΓ͢·͠Λཱͤ͞Δ 60 ߈ܸऀ ར༻ऀ ੬ऑੑͷ͋ΔαΠτ ᶃαΠτʹΞΫηεͯ͠ ηογϣϯ*%Λऔಘ ᶄηογϣϯ*%ͷૹΓࠐΈ ᶅαΠτʹϩάΠϯ ᶆͳΓ͢·ཱ͠
Slide 61
Slide 61 text
Ͳ͏ͬͯར༻ऀʹηογϣϯIDΛૹΓࠐΉͷ͔ • ηογϣϯɾΞμϓγϣϯ / Session Adoption • ͕ࣗൃߦ͍ͯ͠ͳ͍ηογϣϯIDΛ༗ޮͳηογϣϯIDͱͯ͠ڐՄ ͯ͠͠·͏͜ͱ • ࠶ݱྫʣ 1.URLʹΑΔηογϣϯID͕อ࣋Ͱ͖Δঢ়ଶͱ͢Δ 2.߈ܸंʹΑΓ֎෦αΠτ͔Β http://example.jp/?PHPSESSID=hoge ʹ༠ಋ͞ΕΔ 3.ར༻ऀͦͷঢ়ଶͰϩάΠϯ͢Δ 61 ηογϣϯIDͷURLอ࣋Մઃఆ session.use_cookies: 1 session.use_only_cookies: 0 session.use_trans_sid: 1
Slide 62
Slide 62 text
ڴҖ • ใ࿙͍͑ • ϩάΠϯޙʹར༻ऀͷΈ͕ӾཡՄೳͳใͷӾཡɺૢ ࡞ɺѱ༻ 62
Slide 63
Slide 63 text
ݪҼ 1. XSS • ෆਖ਼ͳεΫϦϓτʹΑΓηογϣϯID͕औಘ͞ΕΔ • ηογϣϯϋΠδϟοΫʹѱ༻͞ΕΔ 2. ਪଌՄೳͳηογϣϯID • ηογϣϯID͕ਪଌ͞ΕΔ͜ͱʹΑΓηογϣϯID͕औಘ͞ΕΔ • ηογϣϯϋΠδϟοΫʹѱ༻͞ΕΔ 3. ηογϣϯIDͷURLύϥϝʔλʔར༻ • ྫ) http://example.jp/?PHPSESSID=XXX • ࠷ۙͷγεςϜͰ΄΅ແ͍ɻݹ͍ΨϥέʔγεςϜʹݟΒΕΔ • RefererϔομʔʹΑΓηογϣϯID͕࿙Ӯ͢Δ • ηογϣϯϋΠδϟοΫ/ηογϣϯIDͷݻఆԽʹѱ༻͞ΕΔ 4. ೝূલޙͰηογϣϯID͕ಉ͡ • ηογϣϯIDͷݻఆԽʹѱ༻͞ΕΔ 63
Slide 64
Slide 64 text
ࠜຊతղܾ 1.XSSରࡦ 2.ηογϣϯIDΛਪଌࠔͳͷʹ͢Δ 3.ηογϣϯIDΫοΩʔͷΈͰอ࣋͢Δ 4.ೝূ͕ޭͨ͠Β৽͍͠ηογϣϯΛ։࢝͢Δ 64
Slide 65
Slide 65 text
XSSରࡦ 65 w Σϒϖʔδ্ͷશͯͷग़ྗՕॴͰΤεέʔϓॲཧΛ͢Δ w Ϣʔβʔ͕ೖྗͨ͠จࣈྻΛ)5.-λάͱͯ͠ղऍ͠ͳ͍Α͏ʹॲཧ Λ͢Δ͜ͱ w ಛघจࣈΛ)5.-ΤϯςΟςΟʹม͢Δ͜ͱͰରԠͰ͖Δ ˠ MU ˠ HU l ˠ RVPU ` ˠ ˠ BNQ
Slide 66
Slide 66 text
ηογϣϯIDΛਪଌࠔͳͷʹ͢Δ • ҆શͳཚΛݩʹηογϣϯIDΛൃߦ͢Δ • PHP5.4Ҏ߱ • ҉߸తٖࣅཚੜث(CSPRNG) Λ༻ͯ҆͠શͳηογϣϯID͕ൃߦ͞ΕΔ Α͏ʹͳ͍ͬͯΔ • PHP5.4ະຬ • php.iniʹҎԼઃఆΛՃ͑ͯ҆શͳηογϣϯཚΛݩʹηογϣϯIDΛൃߦ͢Δ 66 [Session] session.entropy_file = /dev/urandom session.entroy_length = 32 PHP 5.4͔ΒσϑΥϧτͰ͜ͷઃఆʹͳ͍ͬͯΔɻͦͷ··ͰOKɻ
Slide 67
Slide 67 text
ηογϣϯIDΫοΩʔͷΈͰอ࣋ɺURLύϥϝʔλʔͰอ࣋͠ͳ͍ 67 ໊લ σϑΥϧτ આ໌ TFTTJPOVTF@DPPLJFT lz ηογϣϯͷอ࣋ʹΫοΩʔΛ ར༻͢Δ TFTTJPOVTF@POMZ@DPPLJFT lz ΫοΩʔͷΈʹηογϣϯΛ อ࣋͢Δ TFTTJPOVTF@USBOT@TJE lz 63-ʹηογϣϯ*%อ࣋Λ ͠ͳ͍ σϑΥϧτͷ··Ͱ php.iniઃఆ
Slide 68
Slide 68 text
ೝূ͕ޭͨ͠Β৽͍͠ηογϣϯΛ։࢝͢Δ • ʮsession_regenerate_id(true) ʯͰݹ͍ηογϣϯΛ ഁغͯ͠৽͍͠ηογϣϯIDΛൃߦ • ηογϣϯIDͷݻఆԽ߈ܸͷࢭ 68
Slide 69
Slide 69 text
ͥͻطଘઃఆΛݟͯ͠Έ͍ͯͩ͘͞
Slide 70
Slide 70 text
ࢀߟɾҾ༻ࢿྉ
Slide 71
Slide 71 text
• ମܥతʹֶͿ ҆શͳWebΞϓ Ϧέʔγϣϯͷ࡞Γํ ୈ2൛ ੬ ऑੑ͕ੜ·ΕΔݪཧͱରࡦͷ࣮ ફ / ಙؙ ߒ (ஶ) • IPA ҆શͳΣϒαΠτͷ࡞Γ ํ ୈ7൛ https://www.ipa.go.jp/ security/vuln/websecurity.html 71
Slide 72
Slide 72 text
·ͱΊ
Slide 73
Slide 73 text
·ͱΊ • զʑͷγεςϜɾαʔϏεৗʹૂΘΕ͍ͯΔ • αʔϏεͷ҆શੑΛߴΊΔͨΊʹɺΤϯδχΞࣗͷ WebηΩϡϦςΟೳྗ্͕ඞཁ • ຊڞ༗ͨ͠੬ऑੑରࡦΛ͖͔͚ͬʹօ͞Μͷ αʔϏεɾγεςϜͷ҆શੑ্͕Ͱ͖ͨΒ͍Ͱ͢ 73
Slide 74
Slide 74 text
ิࢿྉ
Slide 75
Slide 75 text
CookieʹSecureଐੑΛՃ͑Δ • HTTPS௨৴࣌ͷΈCookie͕ϒϥβ͔Βૹ৴ͤ͞ɺ HTTP௨৴࣌ͷCookieྲྀग़Λ͙ • php.ini ͷ session.cookie_secure Λ 1 ʹ͢Δ͜ͱͰରԠՄ 75 ग़య: https://www.php.net/manual/ja/session.configuration.php#ini.session.cookie-secure
Slide 76
Slide 76 text
76 ग़య: http://dsas.blog.klab.org/archives/52136166.html
Slide 77
Slide 77 text
ཁ: PHPͷηογϣϯID҉߸తʹऑ͍ཚੜ ثΛ͓ͬͯΓɺηογϣϯϋΠδϟοΫͷةݥ ੑ͕͋Δ • PHPͷηογϣϯIDͷൃߦॲཧʹɺҎԼͷΈ߹ΘͤΛMD5ʹ௨͠ ͯੜ͍ͯ͠ΔɻۃΊͯݶఆతͳ͕݅ͩɺηογϣϯIDͷਪଌՄ ೳͱ͍͏จ͕ެද͞Ε͍ͯΔɻ • ϦϞʔτIPΞυϨε • λΠϜελϯϓ • ཚʢ҉߸తٙࣅཚൃੜثͰͳ͍ 77 ग़య: http://dsas.blog.klab.org/archives/52136166.html