본문 바로가기
Wargame Write-Up/HackCTF

[HackCTF] (Web) 가위바위보 풀이

by snwo 2020. 3. 16.

가위바위보페이지이다. 가위바위보를 아무리해도

점수같은것도 나오지않는다. 


http://ctf.j0n9hyun.xyz:2037/settings.php

오른쪽위에 이름과 사진을 변경할 수 있는 페이지가있어서 이름을 help로 변경해봤다.

페이지가 php 여서 소스를 한번 봤다.



<div class="header">
		<h1 style="position:absolute; top:5px; left:10px; font-family: sans-serif; font-weight: 900"><a href="/" style="opacity:1.0; text-decoration: none;">HackCTF</a><a href="/" style="opacity:0.6; text-decoration: none;">Arena</a></h1>
		<img src="avatars/helpme" style="position:absolute; width:48px; height:48px; top:5px; right:5px"></img>
		<a href="/settings.php" style="text-decoration: none; position:absolute; color:white; top:4px; right:58px; font-family: sans-serif; font-size: 24px;">
			helpme		</a>
		<a href="/settings.php" style="position:absolute; color:white; top:30px; right:60px; font-family: sans-serif; font-size: 15px;">
			설정
		</a>
	</div>

<body>
	<div style="margin-left:30px; margin-top:20px; font-size: 20px; margin-bottom:10px">
		<h2 align="center" style="color:green;">프로필 사진이 변경되었습니다.</h2>		
		<h2>이름</h2>
		<hr>
		<p style="font-family: sans-serif; margin-top:10px">
			진짜 이름을 변경하실 건가요?
		</p>
		
		<p style="font-family: sans-serif; font-weight:700; margin-top:10px; font-size: 24px">
			현재 이름: <a style="color: black; opacity: 0.6; text-decoration: none;">helpme</a><br>
		</p>
		
		<form action="" method="POST" style="font-family: sans-serif; font-weight:700; margin-top:10px; font-size: 24px">
			새 이름: <input type="text" maxlength="32" name="name"></input>
			<input type="submit" value="이름 변경"/>
		</form>
			
		<br>
		<h2>프로필 이미지</h2>
		<hr>
		<img src="avatars/helpme" style="margin-top:20px; width:256px; height:256px;">
		
		<form action="" method="POST" enctype="multipart/form-data" style="margin-top:10px;">
			<input type="file" name="image" />
			<input type="submit" value="프로필 사진 변경"/>
		</form>
	</div>
</body>

/avatars 디렉토리 밑에사용자이미지가 있는 /helpme 가있다. 들어가보면

helpme 파일이 다운받아진다.

JPG 파일포맷이다.


 php 파일을 올려 웹쉘을 실행시켜보자

확장자만 .php 로 바꿔서 올려도 잘 올라가는거 보니, 

확장자 말고, 파일포맷을 확인하는 것 같다.


정상적인 JPG 파일포맷 뒤에 웹쉘을 작성하고 업로드해봤다


 

이제 php 파일에 접근하면되는데, 

접근이 안된다. 디렉토리는 사용자이름이기때문에, 이름을 ping.php 로 바꾼뒤,

/avatars/ping.php?cmd= 형식으로 웹쉘을 실행시키자.

이제 system($_GET['cmd']); 의 인자를 전달해서 FLAG 를 찾으면 된다.


http://ctf.j0n9hyun.xyz:2037/avatars/ping.php?cmd=cat%20/var/www/html/flag.txt