SWLUG/μ›Ή ν•΄ν‚Ή

[Webhacking.kr] old-28

waterproof 2023. 9. 28. 21:07

https://webhacking.kr/chall.php

 

Webhacking.kr

 

webhacking.kr

 


 

 

 

old-28 문제λ₯Ό λˆ„λ₯΄λ©΄ κ°€μž₯ 처음으둜 λ‚˜μ˜€λŠ” 화면이닀.

 

 

λ―Έμ…˜μ€ ./upload/gKlIl1weasuc/flag.php νŒŒμΌμ„ μ½λŠ” 것이고

λ‚΄ νŒŒμΌμ€ ./upload/gKlIl1weasuc/ 에 μ—…λ‘œλ“œ λœλ‹€κ³  ν•œλ‹€.

 

 

./upload/gKlIl1weasuc/flag.php 을 λˆ„λ₯΄λ©΄ 

 

 

아무것도 λ‚˜μ˜€μ§€ μ•ŠλŠ”λ‹€~

 

 

 

 

일단 [파일 선택] λ²„νŠΌμ„ λˆŒλŸ¬μ„œ 아무 μ‚¬μ§„μ΄λ‚˜ μ˜¬λ €λ΄€λ‹€.

이거 μ˜¬λ Έλ‹€ ν—€ν—€ λ‚΄κ°€ μ’‹μ•„ν•˜λŠ” 사진

 

 

"file too big"μ΄λΌλŠ” 문ꡬ가 생겼고,

 

http://webhacking.kr:10002/index.php  --> μ΄ˆκΈ°ν™”λ©΄ μ›ΉνŽ˜μ΄μ§€ μ£Όμ†Œλ’€μ— /index.php κ°€ 좔가됐닀.

 

 

 

 

 

방금 올렸던 이미지 파일이 λ„ˆλ¬΄ ν¬λ‹€κΈΈλž˜, 파일 크기가 μž‘μ„ 것 같은 ν…μŠ€νŠΈ νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ μ˜¬λ €λ΄€λ‹€.

 

μ΄λ²ˆμ—λŠ” 제좜이 λ˜μ–΄μ„œ 파일이 μ—…λ‘œλ“œ λ˜μ—ˆλ‹€κ³  ν•œλ‹€.

 

 

 

μ—…λ‘œλ“œ 된 μ•ˆλ…•ν•˜μ„Έμš”.txt νŒŒμΌλ‘œ λ“€μ–΄κ°€λ³΄μ•˜λŠ”λ°,

μ›λž˜λŒ€λ‘œλΌλ©΄ "μ•ˆλ…•ν•˜μ„Έμš”" 라고 μ ν˜€μžˆμ–΄μ•Ό ν•˜λŠ”λ° λ¬Έμžκ°€ 깨진 것을 확인할 수 μžˆμ—ˆλ‹€.

 

그런데 action="index.php" λΆ€λΆ„이 μ •ν™•νžˆ 무슨 λœ»μΈμ§€ λͺ¨λ₯΄κ² λŠ”데 신경이 μ“°μ˜€λ‹€. 

 

 

 

방금 전에 λ§Œλ“  μ•ˆλ…•ν•˜μ„Έμš”.txt νŒŒμΌμ„ λ‚΄κ°€ μž„μ˜λ‘œ flag.php둜 λ°”κΎΌ λ‹€μŒ 

 

 

 

μ œμΆœν–ˆλ”λ‹ˆ "no" 라고 λœ¬λ‹€.

 

κ·Έλž˜μ„œ 개발자 λ„κ΅¬μ—μ„œ μ†ŒμŠ€μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ flag.php νŒŒμΌμ„ μ˜¬λ¦¬μ§€ λͺ»ν•˜λ„둝 μ„€μ •λ˜μ–΄ μžˆμ„ 것이라고 μ˜ˆμΈ‘ν–ˆλ‹€.

 

κ·ΈλŸ¬λ‚˜ μ†ŒμŠ€μ½”λ“œλ₯Ό ν™•μΈν•΄λ΄€λ”λ‹ˆ 예츑과 κ΄€λ ¨λœ μ •λ³΄λŠ” μ—†μ—ˆκ³ , λ‹€λ₯Έ 것도 μ•Œμ•„λ‚Ό 수 μžˆλŠ” 것이 μ—†μ—ˆλ‹€.

 

 

 

 

 

 

 

 

action="index.php" 뢀뢄이 신경이 μ“°μ—¬μ„œ

 

μ•ˆλ…•ν•˜μ„Έμš”.txt νŒŒμΌμ„ index.php 파일둜 이름과 ν™•μž₯자λ₯Ό μž„μ˜λ‘œ λ°”κΎΈμ–΄μ„œ μ œμΆœν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€.

 

μ•ˆλ…•ν•˜μ„Έμš”.txt νŒŒμΌμ„ index.php νŒŒμΌλ‘œ 이름과 ν™•μž₯자λ₯Ό λ°”κΎΈμ–΄μ„œ μ˜¬λ Έλ”λ‹ˆ

 

파일 μ•ˆμ˜ λ‚΄μš©μ„ 읽을 수 μžˆμ—ˆλ‹€.

 

action="index.php" λΆ€λΆ„λ•Œλ¬Έμ— index.php 파일만 λ‚΄μš©μ„ 읽어듀일 수 μžˆλŠ” 게 μ•„λ‹κΉŒ? ν•˜λŠ” 생각이 λ“€μ—ˆλ‹€.

 

 

 

 

그리고 index.php 파일의 λ‚΄μš©μ΄ <body>~</body> 사이에 λ“€μ–΄κ°€λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

 

index.php 파일의 text에 μ–΄λ– ν•œ 정보λ₯Ό λ„£μœΌλ©΄ <body>~</body> μ‚¬μ΄μ— λ“€μ–΄κ°„λ‹€λŠ” 사싀을 ν™œμš©ν•΄μ„œ

무언가 ν•  수 μžˆμ§€ μ•Šμ„κΉŒ μ‹Άμ—ˆλ‹€.

 

 

 

 

 

 

 

 

κ·Έλž˜μ„œ index.php 파일 μ•ˆμ— 의미 μžˆλŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό 넣어보면

<body>~</body> μ•ˆμ— κ·ΈλŒ€λ‘œ λ“€μ–΄κ°ˆ 것 κ°™μ•„μ„œ ν•΄λ΄€λŠ”λ°,

 

< κ°€ 인식이 μ•ˆ λœλ‹€.

 

 

 

λ‚΄κ°€ ν‘ΈλŠ” λ°©ν–₯이 μ΄μƒν•΄μ§€λŠ” 것 κ°™μ•„μ„œ μ—¬κΈ°μ„œλΆ€ν„° ꡬ글링을 ν–ˆλ‹€~

 


이 λ¬Έμ œκ°€ λ‚˜μ—κ²ŒλŠ” ꡉμž₯히 μ–΄λ ΅λ‹€κ³  λŠκ»΄μ‘ŒλŠ”λ°,

 

사싀 phpκ°€ 뭔지, μ–΄λ–€ νŠΉμ§•μ„ 가지고 μžˆλŠ”μ§€λΆ€ν„° 잘 λͺ°λΌμ„œ

 

μ°¨κ·Όμ°¨κ·Ό μ•Œμ•„λ³΄μ•˜λ‹€.

 


[1] PHP λž€?

(μ°Έκ³ : https://choseongho93.tistory.com/61)

 

 

 

μš°μ„  PHP의 κ°œλ…κ³Ό νŠΉμ„±μ„ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 

 

 PHPλŠ” 주둜 μ„œλ²„ μΈ‘μ—μ„œ μ‹€ν–‰λ˜λŠ” 슀크립트 언어이닀. μ΄λŠ” μ›Ή μ„œλ²„μ—μ„œ PHP μ½”λ“œκ°€ μ‹€ν–‰λ˜μ–΄ κ·Έ 결과물이 HTML둜 λ³€ν™˜λ˜μ–΄ ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €)μ—κ²Œ μ „μ†‘λœλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. μ΄λ ‡κ²Œ μ „λ‹¬λœ HTML μ½”λ“œμ—λŠ” PHP ν”„λ‘œκ·Έλž¨ μ½”λ“œκ°€ 직접 λ“€μ–΄μžˆμ§€ μ•Šλ‹€. λŒ€μ‹ μ— PHP μ½”λ“œλŠ” μ„œλ²„μ—μ„œ μ‹€ν–‰λ˜μ–΄ κ·Έ 결과물이 HTML에 ν¬ν•¨λ˜μ–΄ μ „μ†‘λœλ‹€.

λ˜ν•œ, PHPλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ μ—°λ™μ΄ μš©μ΄ν•˜λ©°, μ£Όλ‘œ MySQLκ³Ό ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ λ‹€μ–‘ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λŠ” λ° λ§Žμ΄ ν™œμš©λœλ‹€. λΈ”λ‘œκ·Έ, μ†Œμ…œ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€, μ‡Όν•‘λͺ°, μΌμ • κ΄€λ¦¬ μ‹œμŠ€ν…œ λ“±μ„ λ§Œλ“œλŠ” λ°μ— λ§Žμ΄ μ‚¬μš©λœλ‹€.

 

 

PHP의 νŠΉμ§• μ€‘μ—μ„œλ„, 이번 문제λ₯Ό ν’€κΈ° μœ„ν•΄ μ£Όλͺ©ν•΄μ•Ό ν•˜λŠ” 점은

'PHPλŠ” μ„œλ²„ μΈ‘ 슀크립트 μ–Έμ–΄μ΄λ―€λ‘œ μ›Ή μ„œλ²„μ—μ„œ μ‹€ν–‰λ˜κ³ , μ΄λŠ” ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €)μ—κ²Œ μ „μ†‘λ˜κΈ° 전에 μ„œλ²„μ—μ„œ 처리되기 λ•Œλ¬Έμ— λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ μœ λ¦¬ν•˜λ‹€.' λŠ” 사싀이닀.

 

 

 

 

 

λ‹€μ‹œ 문제둜 λŒμ•„μ™€λ³΄λ©΄,

 

 

 

./upload/gKlIl1weasuc/flag.php μ— 듀어갔을 λ•Œ, 

 

 

μ „λΆ€ λ‹€ μ΄λ ‡κ²Œ 흰 ν™”λ©΄μœΌλ‘œ κ°€λ“ν•˜λ‹€

 

 

아무것도 μ•ˆ λœ¨λŠ” μ΄μœ λŠ” μ•„κΉŒ μœ„μ—μ„œ λ§ν•œ PHP의 νŠΉμ§•λ•Œλ¬Έμ΄λ‹€.

 

 

PHP μ½”λ“œλŠ” μ„œλ²„μ—μ„œ μ‹€ν–‰λ˜μ–΄ κ·Έ 결과물이 HTML에 ν¬ν•¨λ˜μ–΄ μ „μ†‘λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

μ΄λ ‡κ²Œ μ „λ‹¬λœ HTML μ½”λ“œμ—λŠ” PHP ν”„λ‘œκ·Έλž¨ μ½”λ“œκ°€ 직접 λ“€μ–΄μžˆμ§€ μ•Šλ‹€. 

 

 

 

 

 

그런데 λ―Έμ…˜μ€ ./upload/gKlIl1weasuc/flag.php 을 μ‹€ν–‰ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ½λŠ” 것이닀.

 

그럼 μ–΄λ–»κ²Œ PHPλ₯Ό μ‹€ν–‰μ‹œν‚€μ§€ μ•Šκ³  μ½”λ“œλ₯Ό 읽을 수 μžˆμ„κΉŒ?

 

 

 

 

이 문제λ₯Ό ν’€λ©΄μ„œ λ°œκ²¬ν•œ 였λ₯˜λ₯Ό 톡해 또 λ‹€λ₯Έ 힌트λ₯Ό 얻을 수 μžˆλŠ”λ°, 

 

 

 

 

였λ₯˜ νŽ˜μ΄μ§€λ₯Ό 톡해 μ΄ λ¬Έμ œμ—μ„œ μ•„νŒŒμΉ˜ μ„œλ²„λ₯Ό μ‚¬μš©ν•œλ‹€λŠ” κ±Έ μ•Œμ•„λ‚Ό 수 μžˆλ‹€.

 

 

 

 

 


[2] Apache μ„œλ²„μ™€ .htaccess 그리고 PHP 파일의 관계

 


이 λ¬Έμ œμ—μ„œ μ‚¬μš©ν•˜λŠ” μ•„νŒŒμΉ˜(Apache) μ„œλ²„λŠ” μ›Ή μ‚¬μ΄νŠΈλ₯Ό 인터넷 μƒμ—μ„œ 접속 κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€.

 

컴퓨터에 μžˆλŠ” μ›Ή νŽ˜μ΄μ§€λ“€μ„ λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²Œ μ œκ³΅ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” 역할을 ν•œλ‹€.

 

 

 


그리고 또 μ•Œμ•„μ•Ό ν•  μ‘΄μž¬κ°€ μžˆλŠ”λ°, λ°”λ‘œ .htaccess νŒŒμΌμ΄λ‹€. (htaccessλŠ” "hypertext access"의 μ•½μžμ΄λ‹€.)

.htaccess νŒŒμΌμ€ μ•„νŒŒμΉ˜ μ„œλ²„μ˜ ν•œ λΆ€λΆ„μœΌλ‘œ, νŠΉμ • 디렉터리와 κ·Έ ν•˜μœ„ 디렉터리에 λŒ€ν•œ 섀정을 λ³€κ²½ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μ€‘μš”ν•œ νŒŒμΌμ΄λ‹€.

 

μ•„νŒŒμΉ˜μ™€ 같은 μ›Ή μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›μ•˜μ„ λ•Œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν• μ§€λ₯Ό κ²°μ •ν•˜λŠ” 역할을 ν•œλ‹€.

 

이λ₯Ό 톡해 λ‹€μ–‘ν•œ 섀정듀을 μ μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ μ„Έλ°€ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ‹€.

 

( 예λ₯Ό λ“€μ–΄, μ•”ν˜Έ 보호, URL λ¦¬λ‹€μ΄λ ‰μ…˜, MIME νƒ€μž… μ„€μ • λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯을 .htaccess νŒŒμΌμ„ 톡해 ꡬ성할 수 μžˆλ‹€.)

 

 

 


 

 

 

이제 이 λ¬Έμ œκ°€ μ•„νŒŒμΉ˜ μ„œλ²„λ₯Ό μ‚¬μš©ν•˜κ³  .htaccess 파일이 μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ•Œμ•˜μœΌλ‹ˆ, 이λ₯Ό μ΄μš©ν•΄μ„œ 문제λ₯Ό ν’€ 수 μžˆλ‹€.

 

파일 μ—…λ‘œλ“œ 디렉토리에 .htaccess νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ κ·Έ μ•ˆμ—μ„œ PHP νŒŒμΌμ„ μ‹€ν–‰ν•˜μ§€ μ•Šλ„λ‘ μ„€μ •ν•˜λ©΄, ν•΄λ‹Ή PHP 파일이 ν…μŠ€νŠΈ 파일둜 μ·¨κΈ‰λ˜μ–΄ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν…μŠ€νŠΈ ν˜•νƒœλ‘œ λ³Ό 수 μžˆλ‹€. 

 

λ‹€μŒ μ§€μ‹œλ¬Έμ„ λ‹΄λŠ” .htaccess λž€ μ΄λ¦„μ˜ νŒŒμΌμ„ μ—…λ‘œλ“œ ν•˜λ©΄ ν•΄λ‹Ή λ””λ ‰ν„°λ¦¬μ—μ„œμ˜ PHP μ½”λ“œ 싀행을 무λ ₯ν™” μ‹œν‚¬ 수 μžˆλ‹€.

 

λ”°λΌμ„œ ν•΄λ‹Ή 디렉터리에 μžˆλŠ” flag.php λ₯Ό 보면 μ†ŒμŠ€ μ½”λ“œκ°€ κ·ΈλŒ€λ‘œ 보이게 λœλ‹€.

 

php_flag engine off

 

 

 

 

 

μœ„μ™€ 같이 νŒŒμΌμ„ μ—…λ‘œλ“œν•΄μ£Όκ³ ,

 

 ./upload/gKlIl1weasuc/flag.php  μ— 듀어가보면

 

 

 

flag 값을 읽을 수 μžˆλ‹€!

 

 

 

 

μ •λ‹΅~

 

 

 

 

 

더보기

μƒˆλ‘­κ²Œ μ•Œκ²Œ 된 κ°œλ…λ“€μ΄ μ•„μ£Ό λ§Žλ‹€!

 

μ•„νŒŒμΉ˜ μ„œλ²„, 디렉토리와 .htaccess 파일의 쑴재, php 파일 λ“±λ“±...

 

μ „λΆ€ λ‹€ 깊게 μ΄ν•΄ν•˜μ§€λŠ” λͺ» ν–ˆμ§€λ§Œ, 문제λ₯Ό ν’€κΈ° μœ„ν•΄ μ΅œλŒ€ν•œ μ΄ν•΄ν•˜λ €κ³  λ…Έλ ₯ν–ˆλ‹€.

 

λΆ€μ‘±ν•œ 뢀뢄이 μžˆμ„ 수 μžˆλ‹€...

 

 

 

(μ°Έκ³ : https://aidencom.tistory.com/402)

(μ°Έκ³ : https://haerinn.tistory.com/226 )

'SWLUG > μ›Ή ν•΄ν‚Ή' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Root me] Install files  (0) 2023.09.30
[Root me] File upload - Double extensions  (0) 2023.09.30
[webhacking.kr] old-12번  (0) 2023.09.27
[Root Me] Javascript - Webpack  (0) 2023.09.26
[Root Me] Javascript - Authentication 2  (0) 2023.09.23