'Wargame'에 해당되는 글 454건


webhacking.kr 4번 문제다.

점수는 150point. 

들어가보니 암호화된 값 같은 것이 보이고 입력창이 보인다. 처음에 sql injection 몇번 시도해보다 아

거 같아서 바로 포기. 대충 보니 위에 값이 대문자,소문자 알파벳과 숫자로된걸 보아 bash64 hash 값인 

것 같다.



바로 webhacking.kr 사이트에가서 디코딩을 해봤다.


뭔가 나올거 같았는데 아직 끝이 아닌 것 같다. 대충 보니 16진수 40개로 이루어 져있다. 일단 뭔지 볼라

바이트 수로 검색을 해봤다. 20byte 16진수 hash 값 으로 검색을 해보니 sha-1이라는 암호화 방식인

것 같다.

https://hashkiller.co.uk/md5-decrypter.aspx

위의 사이트에가서 복호화를 해봤다.


두번 돌려보니 test라는 값이 나온다. 플래그에 입력해보자.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 6번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 3번  (0) 2018.01.08
webhacking.kr 2번  (0) 2018.01.08
webhacking.kr 1번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 3번 문제다.

점수는 350point.

들어가보니 뭔 퍼즐이 있다. 이게 무슨 해킹문제인가 싶은..? 일단 하라는데로 그냥 풀어서 화면을 넘

봤다.

무슨 입력창이 나온다. 일단 대충써서 버튼을 눌러봤다.


흠... 일단 뭔지는 모르겠다. 패킷을 잡아보자.


대충보니 answer값에 뭔가 넣어보면 될 것 같다. 이것저것 해보다 or랑 공백 #이 주석처리 되어있어 우

회할 수 있는 값들을 넣어  or 1 # 형식으로 값을 넣어봤다.


admin이라는 이름의 answer값이 나온다. 정답인 것 같다.

플래그값에 넣어보니 클리어! 비슷한 문제를 많이접하다보니 이제는 점수에비해 쉽게 느껴졌던 문제였

다.


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 2번  (0) 2018.01.08
webhacking.kr 1번  (0) 2018.01.08
webhacking.kr 가입문제  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

wehacking.kr 2번 문제다. 그동안 프로젝트 한다고 문제만 풀고 포스팅을 못했다. 

밀린 포스팅거리가 산더미...... 휴.. 천천히 하나씩 올려보도록 하겠다.

점수는 500point. 2번문제라 쉽게 봤는데 점수가 꽤나 높다. 알고보니 워게임 푸는사람들 사이에서는

홍길동 문제라고 하면 다들 아는 문제라고 한다. 한번 시작해보자.


오호.. 들어가보니 홍길동이 명상중이다. 여러가지 메뉴들이 있다 하나씩 들어가보도록 하자. 

여기저기 둘러보니 아무래도 게시판 쪽이 제일 수상하다. 소스부터 확인해보자.


오호... 보아하니 admin/이라는 경로가 소스에 나타나있다. 들어가보도록 하자.

흠... admin으로 로그인 하라는 것 같다. 첨에 비밀번호가 입력되어 있어 들어가보니 다음과 같은 화면

이 나타난다. 혹시나해서 sql injection을 시도해보며 삽질좀 하다보니 이게 아니구나 싶은 생각이 들기 

시작했다. 다시 전으로 돌아가 게시판쪽을 한편 살펴보기로 하자.

흠... 아무리 살펴봐도 뭐가안보인다.... 이때 거의 멘붕... 도움받아 해결해 볼까하다 진정하고 페이지 하

나하나 소스를 보고 패킷을 잡기 시작... 상당한 시간의 삽질 후에 주석으로 처리되어 있는 시간이 눈에

보이기 시작했다.  

 뭔가 있을 거 같아 유심히 보다보니 패킷쪽에 쿠키 값으로 time이란 값을 넘기고 있다. 혹시나해서 값을
거짓으로 만들어 보았다.


주석처리 되었던 값이 2070-01-01 09:00:01 이라는 값으로 바뀌었다. 아직까진 뭔가 얻을게 없다. 이번엔 거짓 값으로 바꿔 넘겨봤다.

오... Lucky... 주석 값이 다르다.  2070-01-01 09:00:00 라는 값이 나온다. 이를 활용하면 blind sql injection이 가능할 것 같다. 

자 그럼 간단한 파이썬 코드를 작성해보자.

여기서 또한번 엄청난 삽질... 아무리 information_schema.tables를 통해 아무리 의심가는 테이블을

찾아보려고 해도 나오지가 않는다. 도저히 감이안와 찾아보니 애초에 예전엔 테이블 이름을 제공해 줬단

다. 지금은 Board 게시판에  상단에 있는 타이틀이 테이블 이름이란다.. 이걸 어떻게 아냐고... 내가 감각

이 떨어지는건가... 휴.. 어쨋든 저 테이블 이름을 가지고 admin사용자에 대해 파이썬 스크립트르 돌려봤다.

패스워드가 나왔다. 처음에 admin 페이지가서 쳐보니 아무것도 안나온다. 그래서 위에서 admin 메뉴

얼 페이지를 참고하라고 했던걸 떠올려봤다.

보드 게시판에 비밀번호 입력이 가능한 페이지가 하나더 있었고 여기에 입력을 해봤다.

다운받을 수 있는 파일이 있다.


다운 받아 압축을 푸니 비밀번호를 입력하란다. 이 때 위에서 관리자 페이지 메뉴얼 비밀번호를 알려줬던 게 떠올랐다.

그대로 입력해주니 압축이 풀리고 메뉴얼 페이지 파일이 보인다. 들어가보자.

와우.. 패스워드가 나왔다. 이걸 admin페이지에서 입력해 봤는데 아무 변동이 없다. 뭐지 싶다가 답 제

출란에 가서 flag에 입력을 해봤다.

잉? 패스워드만 알아내면 되는거였다. 성공! 

2번이라 만만하게 봤는데 역시 점수가 높은만큼 쉽지는 않았다.. 휴.. 앞으로 갈길이 멀다 ㅠ


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 3번  (0) 2018.01.08
webhacking.kr 1번  (0) 2018.01.08
webhacking.kr 가입문제  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 1번 문제다.

점수는 200point.

들어가보니 index.phps를 봐야할 것 같다.


들어가보니 쿠키값이 6보다는 작고 5보다는 크면 solve()함수가 실행돼 크랙이 성공하는 것 같다.

burp suite를 통해 쿠키값을 5.5로 변조해서 넘겨봤다.

성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 3번  (0) 2018.01.08
webhacking.kr 2번  (0) 2018.01.08
webhacking.kr 가입문제  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 다음과 같이 이전단계에서 argv[2]를 사용할 수 없고 argv[1] 또한 메모리 초기화로 인해 이용할 수 없는 상황이었다.



그렇다면 사용할 수 있는 부분은 argv[0] 값인 실행파일명이었다.


실제로 해당 부분을 사용할 수 있는지 확인해보기 위해 gdb로 main의 leave 지점에 브포건 후 esp 영역부터 쭉 확인해보면 다음과 같이 실제 실행파일명이 스택내에 존재하고 있는 것을 알 수 있었다.



그렇다면 실행파일명에 쉘코드를 박아 실행시키면 스택내에 위와같이 쉘코드가 올라갈 것이고 RET를 해당주소로 덮으면 익스가 가능할 거라고 생각했고 파일명에 NOP와 쉘코드를 박아서 만들었더니 에러가 떴다. 쉘코드에 0x2f가 포함되면서 해당 값이 디렉터리 구분자로 인식되면서 에러가 났던거였다. 0x2f가 포함안된 쉘코드로 다시 실행파일을 만들었다.



이제 해당 실행파일명이 저장되는 메모리 주소를 구해야되는데 기존의 구한 파일명과 길이가 달라 메모리값 차이가 존재해 코어파일을 통해 주소를 구했다.




이제 필요한건 다 구했으니 그대로 익스해주면 된다.



쉘까지 뜨는건 확인했으니 이제 쉘코드로된 실행파일이 실행될 때 실제 setuid가 걸린 troll 바이너리가 실행되도록 심볼릭 링크 걸어주고 다시 익스하면 된다.










'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB vampire -> skeleton  (0) 2018.01.09
LOB troll -> vampire  (0) 2018.01.09
LOB darkelf -> orge  (0) 2018.01.08
LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 이전단계에서 argv[0] 즉 실행파일명의 길이를 체크하는 로직이 추가됬다. 실행파일명 길이만 77글자로 맞춰준 다음 이전과 같이 argv[2] 영역에 쉘코드 올려놓고 익스하면 된다.




잘나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB troll -> vampire  (0) 2018.01.09
LOB orge -> troll  (0) 2018.01.08
LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 argv[1]에 길이제한을 걸어놨다. 근데 이전단계에서도 이미 argv[1]은 48자까지만 값이 들어가고 argv[2]에 쉘코드를 올렸었기 때문에 별 문제가 안된다. 그냥 이전단계와 똑같이 진행해주면 된다.




잘 나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB orge -> troll  (0) 2018.01.08
LOB darkelf -> orge  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
LOB cobolt -> goblin  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 이전단계에서 버퍼가 초기화되는 코드가 추가됬다. 이전단계에서 이미 버퍼에다 쉘코드 안올리고 argv[2] 영역에 올려서 익스했기 때문에 그대로 해주면 된다.




잘나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB darkelf -> orge  (0) 2018.01.08
LOB wolfman -> darkelf  (0) 2018.01.08
LOB goblin -> orc  (0) 2018.01.08
LOB cobolt -> goblin  (0) 2018.01.08
LOB gremlin -> cobolt  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

코드를 보면 다음과 같이 환경변수를 모두 초기화 한다. 그렇다면 쉘코드를 넣을 수 있는 곳이 buf인데 버퍼값이 작아 NOP를 많이 넣을 수 없고 스택주소가 약간의 오차를 가지고 변하고있어 성공확률이 작았다. 그래서 다른곳에 넣을 곳을 찾아야했는데 소스를 잘 보면 인자값이 argc != 2 가 아니고 argc < 2 였다. 즉 인자값이 1개가아닌 2개이상이 되어도 된다는 거다. 그렇다면 argv[2]영역에 NOP를 미친듯이 박아놓고 쉘코드 올린담에 익스하면 된다.



잘나온당.

'Wargame > Lord Of the Bof(redhat)' 카테고리의 다른 글

LOB wolfman -> darkelf  (0) 2018.01.08
LOB orc -> wolfman  (0) 2018.01.08
LOB cobolt -> goblin  (0) 2018.01.08
LOB gremlin -> cobolt  (0) 2018.01.08
LOB gate -> gremlin  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

들어가보면 로그인 창하나가 나오고 로그인해보면 다음과 같이 세션을 할당받은 후 다시 메인페이지로 요청을 하는데 이 때 세션값을 통해 guest로 로그인된 것을 확인을 하는 것을 볼 수 있고 admin으로 로그인을 하면 된다.

 

id password 입력할때 injection일 터질거라고 생각하고 시도해봤지만 통하지 않았고 세션값을 어떻게 조작해야될거란걸 알 수 있었다.

 

세션값을 보면 base64로 인코딩된 값 2개가 붙어있는걸 볼 수 있고 임의의값으로 변경을해보면 패딩이 실패했다는 메시지가 뜬다.

 

딱봐도 Oracle Padding attack이다.

 

로직을 판단해보면 로그인 후 할당받은 base64인코딩된 세션값은 IV와 IV와 평문text를 통해 암호화된 값이라고 판단할 수 있고 Oracle Padding Attack을 통해 IntermedirayValue 값을 알아낸 후 원본 평문 텍스트를 구하여 이를 서버가 admin으로 판단할 수 있는 값으로 변경한 다음 IV를 다시 재세팅해서 보내주면 될 것 같았다.

코드를 짜서 돌려보니 다음과 같이 나왔다.

 

 

코드


import requests

def exploit(payload):
url = "http://wargame.kr:8080/dun_worry_about_the_vase/main.php"
headers = {"Cookie":"L0g1n="+payload}
result = requests.get(url,headers=headers).text
print result
if "padding error" not in result:
return True
else:
return False


iv = ["\x00","\x00","\x00","\x00","\x00","\x00","\x00","\x00"]
wonbon_iv = "tmp8cbAU4IA=".decode("base64").encode("hex")
enc = "aFAD3Z6xbrU="
iv_xor_env = ""
for j in range(1,9):
for i in range(0,257):
iv[8-j] = chr(i)
brute_iv = ("".join(iv)).encode("base64").replace("\n","")
if exploit(brute_iv+enc)==True:
iv_xor_env += chr(j^i)
print iv_xor_env[::-1].encode("hex")

for k in range(0,j):
iv[7-k] = chr(ord(iv_xor_env[k])^(j+1))
print "".join(iv).encode("hex")
break

iv_xor_env = iv_xor_env[::-1].encode("hex")
dec_text = ""
exploit_iv = ""
for i in range(0,len(wonbon_iv),2):
dec_text += chr(int("0x" + iv_xor_env[i:i + 2], 16) ^ int("0x" + wonbon_iv[i:i + 2], 16))
print dec_text
replace_text = dec_text.replace("guest","admin").encode("hex")
for i in range(0,len(iv_xor_env),2):
exploit_iv += chr(int("0x" + iv_xor_env[i:i + 2], 16) ^ int("0x" + replace_text[i:i + 2], 16))

replace_text = exploit_iv.encode("base64").replace("\n","")
print replace_text

exploit(replace_text+enc)
 

Oracle Padding Attack 개념익힌 후 연습겸 풀어봤는데 내가봐도 코드가 더럽다. ㅋ 코딩좀 많이많이 해봐야겠다. 

'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr zairo  (0) 2018.05.09
wargame.kr Crypto Crackme Basic  (0) 2018.05.09
wargame.kr mini TBR  (0) 2018.01.08
wargame.kr adm1nkyj  (0) 2018.01.08
wargame.kr jff3_magic  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,