Web
Flag Shop
회원가입 - 로그인 후 접속하면 money 1000원이 되어있다. 플래그는 99999원이상 있어야 살 수 있다.
힌트 2번째 까지 던져 줬을 때 플래그 가격을 낮출 수도 없고 회원가입 할 때 "초기자금"이 만들어 진다고 했는데 회원가입 창에서 뭔짓 해야된다고 추측만 하고 있다가 마지막 힌트 보자마자 1분내로 풀렸다.
회원가입시 전송되는 파라미터의 값을 추가해준다
기존 : username=qwe&password=qwe&nickname=qwe
파라미터 조작 : username=qwe&password=qwe&nickname=qwe&point=100000
그럼 회원가입시 10만원이 생겨서 플래그를 살 수 있다.
HCAMP{h2ckingc4mp_0pen_beta_market!}
hahahash
1번
MD5 레인보우 테이블에 돌린다 camp
2번
==이므로 매직해시를 사용한다 240610708
3번
md5 충돌하는 해시값을 찾는다. (당시에 풀지 못하고 충돌 값을 나중에 듣게되었습니다.)
hash1 =
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
hash2 =
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
4번
매직해시를 사용한다.
md5 = 240610708
sha1 = 10932435112
HCAMP{bc56f25ac552e60ed73d75d4e9557b91}
Rev
Demon Notepad
파일 실행시
무한루프로 계속 돈다. 문제 풀 때 브금 좋아서 조금 들으면서 했다.
우선 UPX 패킹이 걸려있어서 언패킹 시켜준다.
문제의 그 루트인데 볼 것도 없었다.dword_4058B0 변수가 True여야만 조건문으로 들어가는데 4058B0 변수가 아예 0으로 선언되어 있었다. x32dbg 켜고 IDA랑 비교하며 해당 분기문으로 간 뒤 값을 1로 패치해주고 돌렸다.
안티디버깅 걸려있어서 xdbg 안티디버그 플러그인을 사용했다.
값좀 돌아가더니 플래그 나오는 부분에 BP걸고 나온 값 받으면 된다.
HCAMP{D3m0n_N0t3p4d}
MISC
1만개의 txt파일이 있는 압축파일을 준다.
압축 풀고 파이썬 코드 짜서 확인한다.
for i in range(0, 10000):
f= open("C:/Users/user/Desktop/misc_0/"+str(i)+".txt",'r')
line = f.readline()
if line != "HCAMP{THIS_IS_NOT_REAL_FLAG}":
print(i)
break;
f.close()
6487번째가 나온다.
HCAMP{OH..YOU_FOUND_MEE!!}
flag.png
png이미지를 깨트려서 숨긴줄 알았으나
HxD로 열어보니 PNG시그니처인 IHDR 헤더가 3개있는것을 발견하고 스테가노그래피로 풀게되었다. 가장 위에 있는 2개의 PNG 시그니처 헤더와 푸터를 지워주면 마지막 PNG만 남게되는데 이게 플래그다.
HCAMP{FL4G_IS_HERE}
Treasure hunt
해당 페이지에 숨겨진 소스를 들어가보면 분석하기 싫게 생겨서 하다가 때려치고 나왔는데 중간에 파격적인 힌트로 난독화를 다 풀어주셨다.
flag가 들어가면 밑에 문자열들을 다 합친 key와 비교한다 이 때 flag는 plaintext에서 문자열 하나당 아스키코드로 변환 후 base64함수를 통해 인코딩한 뒤 @ 과 함께 ciphertext에 추가된다. 그리고 모든 문자열에 이 과정이 끝나면 다시한번 base64인코딩 한다.
key 값을 먼저 base64 디코딩 한뒤 나온 값들중 @를 빼고 하나씩 base64 디코딩 더 해주면 플래그가 나온다.
a=[87,48,119,95,85,95,82,95,84,82,51,65,83,85,82,69,95,72,85,78,84,51,82,33]
for i in range(0,len(a)):
print(chr(a[i]))
W0w_U_R_TR3ASURE_HUNT3R!
대회 끝나고 추가 풀이 (플래그 인증해서 점수가 떨어졌다.)
텔레그램 봇과 대화한다.
flag명령어를 쓰면 주는 그림은 훼이크고
/date시 시스템 명령어를 사용하여 Command Injection이 가능하다고 한다..
이걸 씨텦 시작 후 10분도 안되서 푼 사람이 있다니...
그 외 삽질했던 기억문제
goods shop
관리자 쿠키 탈취후 upload부분에서 취약점 터트리는 부분인데 패킷 잡아서 확인해보니 accept xml 전송과 xml 파일 같이 보내는거 보고 XXE 시도했는데 잘 안되서 XXE OOB도 시도했는데 안되길래 이게 맞을텐데 왜 안될까.. 하고 좌절, 결국 제가 문제였습니다.
씨텦도 발표도 재밌었습니다!!
http://13.125.168.158:11020/