일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- web cookie
- 비주스
- HTML
- 쿠키는 맛있음
- webhacking
- php code
- robot image
- js code 해석
- webhacking 14
- aiohttp
- repl.lt
- webhacking.kr 14
- php
- httplib2
- webhacking.kr
- Web
- Visual sutdio
- hacking
- webhacking 6
- 쿠키 사용법
- php 해석
- js 코드
- js 문제
- hidde flag
- urllib.request
- js 해석
- php code 해석
- faster_than_requests
- php base64 encode
- http.client
- Today
- Total
it 공부 일기 - 워게임 ctf 풀이 및 언어 강좌모음
hackctf 마법봉 문제 풀이 본문
한번 들어가보면 이렇게 나와아 마법봉이랑 해쉬에 마법을 부여하면 그 어떤 것도 뜷릴지어니.. 라고 나와있는것을 볼 수 있다.
일단 View Soruce 라는게 있는데 한번 버튼을 눌러보면
이렇게 간단한 소스코드가 나와있을것을 볼 수 있다.
먼저
이 조건에 만족해야지만 flag가 나오는것일텐데 $input 는 클라이언트가 직접 입력을 하면은 되는것이다.
해당 문제는 매직해쉬를 이용하여 푸는 문제이다
php 의 경우 == 비교 연산자는
www.php.net/manual/en/language.operators.comparison.php
이 링크와 같이
== 로 사용하는 경우에 만약 숫자 문자열이면 비교할때 숫자로 비교를 하게된다는것이다.
md5("240610708") 를 실행시켜보면
0e462097431906509019562988736854이라는 값이 나오게 된다.
매직해시라는 취약점의 경우
php 의 비교 연산자를 이용하여 0e... 과 같은 형태로 나오게되면서 서로 일치한 값이 나오게 되버리는것이다.
만약
if("0e315312523" == "0e124")
이렇게 비교한다 해도 == 는 숫자로 변환이 가능하면 숫자로 비교를 하게 된다.
그러면 해당 hackctf를 살펴보면
sha1($input)
이런식으로 우리가 입력하는거를 sha1 방식으로 해시하게 되므로
sha1 magic hash
이런식으로 구글링을 하면
10932435112 이라는 값을 넣으면 sha1 해시할때 0e07766915004133176347055865026311692244
이런식으로 나오게된다는것이다.
이제 파악은 다 했으니 원래 페이지로 돌아가여
이렇게 제출하면
플래그가 나오는것을 볼 수 있다.
HackCTF{magic_makes_everything_possible}
'ctf.j0n9hyun.xyz' 카테고리의 다른 글
hackctf Guess me 문제 풀이 (0) | 2021.01.11 |
---|---|
hackctf Login 문제 풀이 (1) | 2021.01.11 |
hackctf web / 문제 풀이 (0) | 2020.12.12 |
hackctf Button 문제 풀이 (0) | 2020.12.12 |
hackctf 보물 문제 풀이 (0) | 2020.12.12 |