CTF/웹해킹

[Affinity CTF] sooodefault - 웹해킹 / Python

SecurityMan 2022. 12. 27. 11:00

 

아주 간단한 웹해킹 문제

 

풀이 자체는 간단한데 시작점을 찾는게 조금 어려울 수 있는 문제였다.

 

엄밀히 말하면 해킹이라고 보기도 어려운 문제다.

 

반응형

 

문제 파일은 따로 제공되지 않고

 

문제페이지 주소만 제공된다.

 

 

해당 페이지에 접속해보면

 

Apache2 Ubuntu Default Page 인 It works! 페이지가 나온다.

 

이건 사용자가 만든게 아니라

 

Ubuntu 리눅스에 Apache 를 설치하면 기본으로 있는 페이지이다.

 

아무리 찾아봐도 이 페이지 외에 다른 페이지를 찾을 수 없었고,

 

이 페이지에서 뭔가를 찾아서 해결해야 하는듯 했다.

 

 

wget 명령어를 이용해 해당 페이지의 html 코드를 다운로드 받아봤다.

 

wget <웹페이지 주소> 형태로 리눅스 터미널에 입력하면 된다.

 

index.html 의 내용을 천천히 보다보니

 

특이한 부분이 눈에 띄었다.

 

html 코드가 영어로 잘 써있는데

 

특정 글자들이 위처럼 &#65; 형태로 인코딩된 모습으로 적혀있었다.

 

 

&#65; 는 대문자 A를 의미한다.

 

Apache2 Ubuntu Default Page 에서

 

빨간 부분을 저렇게 써놓은 것이다.

 

이렇게 인코딩된 글자들을 모아서 하나로 합쳐보면 뭔가 나올것 같았다.

 

import requests
import re

url = 'http://web2.affinityctf.com/'
text = ''

r = requests.get(url)
text = re.findall("&#[0-9]{2,3}", r.text)

print(text)
print(''.join([chr(int(i.replace("&#",""))) for i in text]))

 

파이썬을 이용해 간단하게 코드를 짤 수 있다.

 

requests 를 이용해 해당 페이지의 html 코드를 가져오고,

 

가져온 html에서 정규식 표현을 이용해 &# 로 시작하고 0-9 숫자로 이루어진 2~3글자를 모두 뽑아낸다.

 

그런다음 맨 앞에 있는 &#를 없애주고,

 

int형으로 변경한 뒤 chr를 이용해 ascii 코드로 변경해주면

 

아까처럼 &#65 같이 써있던 글자들이 A 같은 형태로 바뀔것이다.

 

 

해당 코드를 실행시키면

 

플래그를 찾을 수 있다.

반응형