Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SQL Injection Basics
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kentaro Kuribayashi
October 02, 2012
Technology
17k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SQL Injection Basics
社内勉強会用資料です。
Kentaro Kuribayashi
October 02, 2012
More Decks by Kentaro Kuribayashi
See All by Kentaro Kuribayashi
あとはAIに任せて人間は自由に生きる
kentaro
5
2.2k
社会人力と研究力ー博士号をキャリアの武器にするー
kentaro
3
340
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
2
2.6k
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
810
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
370
「始め方」の始め方 / How to Start Starting Things
kentaro
5
1k
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.7k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
800
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
8
7k
Other Decks in Technology
See All in Technology
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
300
tamachi.go 誕生の裏側
rymiyamoto
1
200
RelayerというPHPのフレームワークを作った
polidog
PRO
0
120
:syncing_time:
sksat
2
340
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
510
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
490
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
280
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
840
自宅NWにISR4331を導入してみた話
okaits
0
120
AI開発に用いられるHPC技術について
gpuunite_official
0
250
dbt in Microsoft Fabric
ryomaru0825
0
120
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
880
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
270
Accessibility Awareness
sabderemane
1
180
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Designing for humans not robots
tammielis
254
26k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Writing Fast Ruby
sferik
630
63k
Speed Design
sergeychernyshev
33
2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
エンジニアに許された特別な時間の終わり
watany
108
250k
Transcript
42-ΠϯδΣΫγϣϯͷ ݪཧɾݪଇ @kentaro ܀ྛ݈ଠ paperboy&co. http://www.flickr.com/photos/vissago/3270115155/
@kentaro ΤϯδχΞ 1FSMFS ϧϏʔετ ʮͪʯʮͪ ͺʔʯ࢝ऀ /FX ܀ྛ݈ଠ paperboy&co.
‣42-ΠϯδΣΫγϣϯࣗମͷৄࡉ ޙड़ͷࢀߟจݙΛࢀরͷ͜ͱ ‣͜͜Ͱ42-ΠϯδΣΫγϣϯΛ ࢝Ίͱ͢Δɺ͘8FCηΩϡϦςΟ ʹؔ͢Δݪཧɾݪଇʹ͍ͭͯड़·͢ લఏ
42-ΠϯδΣΫγϣϯɺ42-ͷݺͼग़͠ํʹෆඋ͕͋Δ߹ʹൃੜ͢Δ੬ ऑੑͰ͢ɻΞϓϦέʔγϣϯʹ42-ΠϯδΣΫγϣϯ੬ऑੑ͕͋Δ߹ɺҎԼ ͷΑ͏ͳӨڹΛड͚ΔՄೳੑ͕͋Γ·͢ɻͯ͢ɺ߈ܸऀ͕ೳಈతʹ ར༻ऀͷ ؔ༩ͳ͠Ͱ αʔόʔΛ߈ܸͰ͖·͢ɻ ‣σʔλϕʔεͷͯ͢ͷใ͕֎෦͔Β౪·ΕΔ ‣σʔλϕʔεͷ༰͕ॻ͖͑ΒΕΔ ‣ೝূΛճආ͞ΕΔ *%ͱύεϫʔυΛ༻͍ͣʹϩάΠϯ͞ΕΔ
‣ͦͷଞɺσʔλϕʔεαʔόʔ্ͷϑΝΠϧͷಡΈग़͠ɺॻ͖ࠐΈɺϓϩά ϥϜͷ࣮ߦͳͲΛߦΘΕΔ 42-ΠϯδΣΫγϣϯ ʰମܥతʹֶͿ҆શͳ8FCΞϓϦέʔγϣϯͷ࡞ΓํʱQ ҎԼʰಙؙຊʱ
$sql = "SELECT * FROM user WHERE uid = "
. $uid . " AND provider = '" . $provider . "'"; ΠϯδΣΫγϣϯͷྫ SELECT * FROM user WHERE uid = 9999 AND provider = ''; DELETE FROM user; -- ͠$provider͕͜͏ͩͬͨΒ '; DELETE FROM user; -- ʘ ?P? ʗ
͠੬ऑੑ͕͋ͬͨΒ ใ͕ྲྀग़ͨ͠߹ʹاۀଘଓͷةػʹͭͳ͕Γ͔Ͷͳ͍ɻ ใॲཧਪਐػߏʢ*1"ʣ42-ΠϯδΣΫγϣϯʹΑΔඃ͔Β ͷ෮چίετԯԁΛ͑͏Δͱ͓ͯ͠Γɺ࣮ࡍʹαϯυϋ εͷࣄྫͰิঈͷΈͰ໊ʹԁ૬ͷظݶ ͖ΫϨδοτΛෛ୲͍ͯ͠Δɻิঈͷ΄͔ʹઐՈʹΑΔௐ ࠪɺγεςϜͷೖΕସ͑ɺސ٬ରԠɺҰ࣌ดʹΑΔӦۀػձͷ ҳࣦɺ෩ධඃͱ͍ͬͨෛ୲͕͋Γɺ42-ΠϯδΣΫγϣϯؚ ΊηΩϡϦςΟରࡦݫີʹߦ͏͖Ͱ͋Δɻ IUUQKBXJLJQFEJBPSHXJLJ42-ΠϯδΣΫγϣϯ
੬ऑੑͷछྨ ʰಙؙຊʱQ
ΠϯδΣΫγϣϯܥ ʰಙؙຊʱQ 42-ΠϯδΣΫγϣϯ੬ऑੑ͕ൃੜ͢ΔݪҼɺͱͱʮσʔλʯΛఆ͠ ͍ͯΔͱ͜ΖʹγϯάϧΫΥʔτʮʯΛͬͯσʔλ෦ΛऴΘΒͤɺ42- จͷߏΛมԽͤͨ͞ͱ͜Ζʹ͋Γ·͢ɻ͜ͷݪཧଞͷΠϯδΣΫγϣϯܥ ੬ऑੑͰಉ͡Ͱ͢ɻσʔλͷதʹҾ༻ූσϦϛλͳͲʮσʔλͷऴʯΛ ࣔ͢ϚʔΫΛࠞೖͤͯ͞ɺͦͷޙͷจࣈྻͷߏΛมԽͤ͞ΔͷͰ͢ɻ
ݪཧ ‣94442-ΠϯδΣΫγϣϯɺ ى͜Δݪཧಉ͡ ‣)5.-ʹͤΑ42-ʹͤΑɺ8FCΞ ϓϦͷมͱ·ͬͨ͘ผͷϧʔϧ ʹΑͬͯߏங͞ΕΔจࣈྻ ‣ͦΕΒͷੈքͷϧʔϧΛཚ͞ͳ͍Α ͏ʹҙ͢Δඞཁ͕͋Δͱ͍͏Ͱಉ ͡
ݩʑɺ)5.-Λग़ྗ͢Δͱ͖ɺͦͷग़ྗશମʹରͯ͠ʮʯʮʯʮʯͷ Τεέʔϓॲཧͷݕ౼͕ཁٻ͞Ε͍ͯΔͷͰ͋ͬͯɺ$(*ೖྗʹґଘ͍ͯ͠Δ ͔Ͳ͏͔ແؔͰ͋Δɻͦ͜ͷߟ͑ํʹʮແಟԽʯͩͷʮແԽʯͩͷʮফ ಟʯͩͷʮαχλΠζʯͩͷʮαχλΠδϯάʯͩͷͱ͍͏ʢ࠷ۙྲྀߦͷʣൃ ग़ͯ͜ͳ͍ɻ ʮαχλΠζݴ͏ͳΩϟϯϖʔϯʯͱԿ͔ http://takagi-hiromitsu.jp/diary/20051227.html#p02 ݪཧ
ೖྗͷݕূʁ ‣όϦσʔγϣϯΞϓϦతʹॏཁ ‣ͨͩ͠ɺͦΕΞϓϦͷ༷ͷ Ͱ͋ͬͯɺ42-ΠϯδΣΫγϣϯͱ ؔͳ͍ ‣݁Ռతʹཱͭ͜ͱ͋Δ͚ͩ
αχλΠζʁ ‣͍͏ͳ CZͻΖΈͪΎઌੜ ‣Ͳ͏ͤ࿙ΕΔ ‣લड़ͷ௨Γɺҧ͏ϧʔϧͷจࣈྻΛ ࡞͠Α͏ͱ͍ͯ͠Δͷ͔ͩΒʮԚ છʯ͞ΕͯΑ͏͕ͳΜͩΖ͏͕ɺશͯ దʹॲஔ͢Δ͖
҉ͷલఏΛආ͚Δ ‣$entry->user_idʹ͔͋͠Γಘͳ͍ ͱ͍͏લఏʹཔΒͳ͍ ‣ͦΕ͕ຊʹͦ͏͔ͳΜͯΘ͔Βͳ͍͠ɺ Βͳ͍ؒʹલఏ͕มΘΔ͔͠Εͳ͍ ‣ੲ͋ͬͨmagic_quotes_gpc=onͱ͔֎ "select * from user
where user_id = " . $entry->user_id
είʔϓΛڱΊΔ ‣มͷείʔϓͰ͖Δ͚ͩڱ͍ํ͕Α͍ͱ ͍͏ϓϩάϥϛϯάͷݪଇΛద༻ ‣άϩʔόϧมΛͰ͖Δ͚ͩආ͚Δ͖Ͱ͋ Δͷͱಉ༷ ‣ۙͷίʔυͷΈͰ҆શੑΛ֬ೝͰ͖Δํ͕ Α͍ ‣ίʔυ͔Βԕ͘ΕͨॴͰอূ͞Ε͍ͯΔ ͔͠Εͳ͍ ͜ͱʹͨΑͬͯॲཧΛม͑Δ
͖Ͱͳ͍
ग़ྗͷۙͰॲஔ ‣ϓϩάϥϜͷม ϢʔβೖྗͰ%#͔Β ͖ͨͷͰͳΜͰ ͱ)5.-42-Λ݁߹ ͢Δࡍʹɺͦͷ݁߹ͷۙͰɺ)5.-42- ͷϧʔϧʹ߹ΘͤͨͳΜΒ͔ͷॲஔΛࢪ͢ ‣)5.-ͳΒhtmlspecialchars($str, ENT_QUOTES)͢Δ͠ɺ42-ͳΒϓϨʔεϗϧ μΛ͏ͳͲ
42-ΠϯδΣΫγϣϯͷࠜຊతղܾͷجຊόΠϯυػߏΛ༻͢Δ͜ͱͰ͢ ͕ɺԿΒ͔ͷཧ༝ʹΑΓόΠϯυػߏͰ࣮Ͱ͖ͳ͍߹ɺΤεέʔϓॲཧ ʹΑΔରࡦࠜຊతղܾͷҰͭʹͳΔͱ͍ͯ͠·͢ɻ͔͠͠ɺ্ͷҾ༻෦ʹ ͋ΔΑ͏ʹɺ42-ʹͱͬͯಛผͳҙຯΛ࣋ͭه߸ʢϝλจࣈʣɺσʔλϕʔ εΤϯδϯʹΑͬͯҟͳΔͷͰ͋ΓɺڥʹԠͯ͡ରࡦ͢Δඞཁ͕͋Γ· ͢ɻ ʰ҆શͳΣϒαΠτͷ࡞Γํผɿʮ҆શͳ42-ͷݺͼग़͠ํʯʱQ ݪଇ
mysql_queryؔ ‣ඇਪͰ͢ ‣Θͳ͍Α͏ʹ $sql = vsprintf( "SELECT * FROM user
WHERE uid = %d AND provider = '%s'", array_map('mysql_real_escape_string', array($uid, $provider)) ); $result = mysql_query($sql);
1&"3%# $result = $db->query( "SELECT * FROM user WHERE uid
= ? AND provider = ?", array($uid, $provider) ); ‣։ൃఀࢭ͍ͯ͠·͢ ‣Θͳ͍Α͏ʹ
1%0 ‣ʮ1%0ʹ͓͚ΔҰԠͷ҆શએݴͱΔ ʯIUUQCMPHUPLVNBSVPSH QEPIUNMΑΓվมͷ্ܝࡌ $dbh = new PDO('mysql:host=hostname;dbname=dbname;charset=utf8', “user”, “pass”);
// ੩తϓϨʔεϗϧμΛࢦఆ $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $sth = $dbh->prepare("SELECT * FROM user WHERE uid =? AND provider = ?"); $sth->setFetchMode(PDO::FETCH_NUM); $sth->bindParam(1, $uid, PDO::PARAM_INT); $sth->bindParam(2, $provider, PDO::PARAM_STR); $sth->execute();
1&"3.%# ‣ʰಙؙຊʱQΑΓɺվมͷ্ܝࡌ header('Content-Type: text/html; charset=UTF-8'); $mdb2 = MDB2::connect('mysql://user:pass@hostname/dbname? charset=utf8'); $sql
= "SELECT * FROM user WHERE id = ? AND provider = ?"; $stmt = $mdb2->prepare($sql, array($uid, $provider)); $rs = $stmt->execute(array($author));
ԿΛ͍͍͑ͷʁ ‣1)1Ҏલͷ1%0จࣈίʔυ·ΘΓ Ͱ͍Ζ͍Ζ໘ ‣1&"3.%#Λ͏ͷ͕ແͦ͏ ‣͍ͣΕʹͤΑɺͪΌΜͱจࣈίʔυΛࢦఆ͠ ·͠ΐ͏ ‣ৄ͘͠ʮ1%0ʹ͓͚ΔҰԠͷ҆શએݴͱ ΔʯIUUQCMPHUPLVNBSVPSH QEPIUNMࢀরͷ͜ͱ
·ͱΊ ‣ม͕Ͳ͏͍͏Ͱ͋Δ͔ʹؔΘΒͣɺม ͷΛؚΉ42-ΛΈཱͯΔ߹ɺඞͣϓ ϨʔεϗϧμʔΛ͏ͳΓɺΤεέʔϓ͢Δͳ Γ͢Δ લऀɺಛʹ੩తϓϨʔεϗϧμΛ͏ ‣҉ͷલఏʹͨΑΒͣɺ҆શੑΛۙͰ֬ೝ Ͱ͖ΔΑ͏ʹ͢Δ ‣42-ΠϯδΣΫγϣϯʹݶΒͣɺಉ༷ͷΠϯ δΣΫγϣϯܥ੬ऑੑ
લड़ Ͱಉ༷
੩తϓϨʔεϗϧμʹؔ͢Δิ https://twitter.com/tokuhirom/status/253499819136520193 https://twitter.com/tokuhirom/status/253501614747439104 ‣ϝϞϦΛແବʹফඅ ͢Δͱ͍͏ʁ ‣ΫϥΠΞϯτ͕ͪΌ Μͱεςʔτϝϯτϋ ϯυϥΛ։์ͯ͠Ε ͳ͍ʁ ‣IUUQCMPHFWFSRVFVFDPN
DIJCB
༨ஊ ಙؙઌੜʹ͓͖͍͖ͨͩ·ͨ͠ https://twitter.com/ockeghem/status/253128283795886080
ࢀߟจݙ ‣ʮαχλΠζݴ͏ͳΩϟϯϖʔϯʯͱԿ͔ ‣IUUQUBLBHJIJSPNJUTVKQEJBSZIUNMQ ‣ʰମܥతʹֶͿ҆શͳ8FCΞϓϦέʔγϣϯ ͷ࡞Γํʱ ಙؙߒɾஶ ‣IUUQXXXTCDSKQQSPEVDUTIUNM ‣ʰ҆શͳΣϒαΠτͷ࡞Γํผʮ҆શͳ 42-ͷݺͼग़͠ํʯʱ ‣IUUQXXXJQBHPKQTFDVSJUZWVMOEPDVNFOUT
XFCTJUF@TFDVSJUZ@TRMQEG