반응형

HackCTF 문제 풀이 / Web - Read File (100)

 

https://ctf.j0n9hyun.xyz/challenges#Read%20File

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

Read File - 100점 문제를 풀어보도록 하겠습니다. 

아래 링크에 접속해 보도록 하겠습니다. 

이 페이지를 보면, 구글 페이지가 출력되고, url의 command 전달인자에 http://google.com이 이 넘겨지고 있습니다. 

이 전달인자의 값을 flag.php를 넘겨보도록 하겠습니다.

flag.php를 넘겨주면, Read File / File is flag.php만 출력하고 있습니다. 

이 전달인자를 필터링 하는 것으로 보입니다. 

이 전달인자를 조작하여 입력해보도록 하겠습니다. 

http://google.com 앞에 flag를 붙여서 입력하였더니, 그래도 구글 페이지가 출력되었습니다. 

flag 문자열이 필터링에 걸려진 것으로 보입니다. 

flag라는 단어가 필터링되어 없어져도 flag.php가 조합되도록 fflaglag.php를 입력해보았습니다.

그랬더니 아래와 같이 Flag 값이 출력되는 것을 볼 수 있습니다.

 

반응형
반응형

HackCTF 문제 풀이 / Web - Guess me (100)

https://ctf.j0n9hyun.xyz/challenges#Guess%20me

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

Guess me 100 문제를 풀어보도록 하겠습니다. 

우선 아래 링크에 접속하겠습니다.

http://ctf.j0n9hyun.xyz:2030/

접속을 해보면 아래와 같이 php 코드가 있고, 코드를 입력하는 부분과 제출 버튼이 있습니다. 

secret.txt를 입력하면 비밀코드가 아니라고 출력됩니다. 

그리고 url의 guess 전달인자에는 아래 텍스트 박스에 입력한 문자열이 입력됩니다. 

우선 코드를 한번 분석해 보겠습니다. 

$_Get 으로 입력된 값을 추출하고, if문에서 isset($guess) 함수를 호출하였는데, 이는 $guess로 설정된 변수가 있는지 확인합니다.
trim은 문자열 양 옆의 공백을 지우는 역할을 합니다. 
file_get_contents()는 전달인자로부터 텍스트를 읽습니다. 

그 다음에는 guess와 secretcode 값이 같도록 설정하면 flag를 출력하는 곳으로 분기됩니다. 

우선 guess 변수는 get으로 전달하는 값을 적절히 하면 if 문 아래로 갈 수 있을 듯 합니다. 
secretcode 변수가 문제인데 이는 filename 변수로부터 값을 읽어들이고, filename 변수는 secret.txt으로 저장되어 있습니다.

문제의 해결은 filename 변수값에 아무 값이나 대입하는 것입니다. 
이것이 가능한 이유는 extract() 메서드가 filename 변수를 선언한 뒤에 나타나기 때문입니다.

filename에 해당하는 파일을 찾고, 그 파일의 콘텐츠를 확인하는데 서버 내 파일이 없기에 Null 값을 리턴하는데, 
guess도 Null 값이 들어가면 됩니다. 

따라서 filename=아무문자&guess= 와 같이 주소창에 대입하면 원하는 flag를 찾을 수 있게 됩니다. 

반응형

+ Recent posts