반응형

HackCTF 문제 풀이 / Web - Home (200)

 

https://ctf.j0n9hyun.xyz/challenges#Home

 

HackCTF

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

ctf.j0n9hyun.xyz

 

Web - Home(200) 문제를 풀어보도록 하겠습니다. 

우선 아래 링크에 접속합니다.

http://ctf.j0n9hyun.xyz:2034/

접속해 보면 아래와 같이 출력됩니다. 

해결하기 위한 단서는 머리말을 생각해보는 것뿐이라고 합니다.

 

HTTP Header와 관련이 되어 있는데, X-Forwarded-For이라는 Header가 있습니다.

프록시를 사용할 때, 기존의 IP를 입력하는 Header인데, HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준으로 사용됩니다. 

Burp Suite Tool을 이용하여, 이 XFF를 Header 부분에 추가하여,  루프백(127.0.0.1)을 입력하고, Forward하였습니다. 

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

반응형
반응형

HackCTF 문제 풀이 / Web - 마법봉 (100)

 

https://ctf.j0n9hyun.xyz/challenges#%EB%A7%88%EB%B2%95%EB%B4%89

 

HackCTF

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

ctf.j0n9hyun.xyz

마법봉 - 100 문제를 풀어보겠습니다.

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

http://ctf.j0n9hyun.xyz:2029/

접속해보면 아래와 같이 출력됩니다. 

View Source 버튼을 눌러서 소스코드를 확인해보겠습니다.

url의 전달인자 flag를 input에 넣고, input을 SHA1으로 암호화한 값이 md5로 240610708을 암호화한 해시값과 같으면 플래그가 출력된다고 합니다. 

240610708을 md5로 암호화한 값을 아래와 같이 0e462097431906509019562988736854 로 결과를 출력합니다.

Magic Hash는 PHP에서 ==를 통해 비교시 생기는 type conversion에 의한 취약점입니다. 

0e로 시작되고 뒤에 있는 값들이 모두 숫자라면, string 형태이지만, 비교 연산시에는 float로 Type Casting 되기 때문에 문제가 발생합니다.

비교하는 대상도 0e로 시작되는 값이라면, 두 값이 모두 exponent로 바뀌어 0이라는 값을 갖게 되므로 연산이 참이 됩니다. 

 

따라서 SHA1 으로 되는 값이 0e로 시작되면 되기 때문에 아래 사이트에 있는 10932435112 숫자 문자열을 이용하면 됩니다. 

https://www.whitehatsec.com/blog/magic-hashes/

 

Magic Hashes | NTT Application Security

For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator.

www.whitehatsec.com

10932435112를 입력하여 제출해보겠습니다.

그러면 아래와 같이 Flag를 확인할 수 있습니다.

반응형
반응형

HackCTF 문제 풀이 / Web - Login (100)

 

https://ctf.j0n9hyun.xyz/challenges#Login

 

HackCTF

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

ctf.j0n9hyun.xyz

 

Web - Login (100) 문제를 풀어보겠습니다. 

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

http://ctf.j0n9hyun.xyz:2024/

그러면 아래와 같이 Username, Password 입력창과 Login / View Source 버튼이 있습니다. 

View Source 버튼을 눌러보겠습니다.

소스 코드를 보면 id와 pw를 $sql로 db에 쿼리를 던지고 있습니다. 

$sql = "select * from jhyeonuser where binary id='$id' and pw='$pw'";
위 코드의 id='$id' and pw='$pw' 부분에서 SQL Injection이 일어날 수 있습니다.

아래 코드를 id 입력란에 넣어면 조건이 무조건 참이라, 그 id(admin)에 해당하는 값을 가져올 수 있습니다. 

admin' or '1'='1

아래와 같이 입력하고, Login 버튼을 눌러보겠습니다.

그러면 아래와 같이 Flag가 출력됩니다. 

반응형
반응형

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 값이 출력되는 것을 볼 수 있습니다.

 

반응형

+ Recent posts