λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🏴CTF/DreamHack

DreamHack - [wargame.kr] tmitter 풀이

by Janger 2023. 9. 9.
728x90
λ°˜μ‘ν˜•

SQL Injection 취약점이 μžˆλŠ” νŽ˜μ΄μ§€ μ°ΎκΈ°

μš°μ„  둜그인 νŽ˜μ΄μ§€, νšŒμ› κ°€μž… νŽ˜μ΄μ§€μ— λ‹¨λ”°μ˜΄ν‘œ(‘)λ‚˜ μŒλ”°μ˜΄ν‘œ(")λ₯Ό λ‹€ λ„£μ—ˆμ§€λ§Œ λ”±νžˆ λ¬Έμ œμ—†μ΄ νšŒμ› κ°€μž…κ³Ό 둜그인이 μž‘λ™ν–ˆλ‹€. ν•˜μ§€λ§Œ λ‹‰λ„€μž„μ— λ‹¨λ”°μ˜΄ν‘œ(’)κ°€ μžˆμ„ λ•Œ tmitter μž‘μ„± κΈ°λŠ₯이 잘 μ•ˆλ˜λŠ” 것을 ν™•μΈν•˜μ—¬ μž‘μ„± κΈ°λŠ₯에 SQLi μ·¨μ•½ν•œ 점을 μ°Ύμ•˜λ‹€.

ν•„λ“œ 개수 ν™•μΈν•˜κΈ°

tmitter μž‘μ„± κΈ°λŠ₯에 μ‚¬μš©ν•˜λŠ” SQL 쿼리문을 μ˜ˆμΈ‘μ„ ν•΄λ³΄μ•˜λ‹€.
μ²˜μŒμ—λŠ” μ•„λž˜μ™€ 같은 쿼리λ₯Ό 쓰지 μ•Šμ„κΉŒ 생각을 ν–ˆμ—ˆμ§€λ§Œ 그럼 곡격이 먹히기 쉽지 μ•Šμ•˜λ‹€.

insert into tmitter_board(id, msg) values ('guest', 'hello');

μ•„λ¬΄νŠΌ λ©”μ‹œμ§€', null)#을 μ“°κ³  μž‘μ„±μ„ ν•˜λ‹ˆ μ œλŒ€λ‘œ μ˜¬λΌκ°€λŠ” 것을 ν™•μΈν•˜κ³  ν•„λ“œκ°€ λͺ‡ 가지 더 μžˆλ‹€λŠ” 것을 확인함

μž‘λ™ν•˜λŠ” λ©”μ‹œμ§€', null)#에 더 λ‚˜μ•„κ°€ μ΄λ²ˆμ—λŠ” λ©”μ‹œμ§€', null), (0, 0, 0, 0)#λ₯Ό μž‘μ„±ν•˜κ³  μž‘λ™μ΄ λ˜λŠ” κ±Έ ν™•μΈν•˜κ³  μž…λ ₯λ°›λŠ” ν•„λ“œκ°€ 4개인 것을 μΈμ§€ν•˜μ˜€λ‹€.

μ‹€μ œλ‘œ μ•„λž˜μ™€ 같은 쿼리문이 μ•„λ‹ˆμ˜€μ„κΉŒ

insert into tmitter_board(???, id, msg, ???) values (???, 'guest', 'hello', ???);

admin νŒ¨μŠ€μ›Œλ“œ λΉΌλ‚΄μ˜€κΈ°

λ©”μ‹œμ§€', null), (0, 'admin', (select ps from tmitter_user where id='admin'), 0)#

admin의 νŒ¨μŠ€μ›Œλ“œλ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•΄ μ‚¬μš©ν•œ 쿼리문이닀. μœ„μ²˜λŸΌ μ‰Όν‘œ(,)λ₯Ό κΈ°μ€€μœΌλ‘œ insertκ°€ 두 개 이상이 κ°€λŠ₯ν•˜κ³  또 value μ•ˆμ— 쿼리문이 μ‚¬μš© κ°€λŠ₯ν•˜λ‹¨ 것을 처음 μ•Œμ•˜λ‹€.

728x90
λ°˜μ‘ν˜•

'🏴CTF > DreamHack' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

DreamHack - chocoshop 풀이  (0) 2023.09.09
DreamHack - funjs 풀이  (0) 2023.09.09
DreamHack - [wargame.kr] crack crack crack it 풀이  (0) 2023.09.09
DreamHack - broken-png 풀이  (0) 2023.09.08
DreamHack - phpreg 풀이  (0) 2023.09.08