'분류 전체보기'에 해당되는 글 1000건


webhacking.kr 7번 문제다.

점수는 300point.

들어가보니 auth 버튼빼곤 별다른게 안보인다. 눌러보니 접근 거부란다. 소스를 확인해보자.

val=2가 일단 눈에보인다. 염두한 채로 index.phps로 넘어가보자. 흠.. val값을 2로 넣어 보내보려 했더

니 일단 주석에서 값이 없다한다. 대충 소스를 보니 val값으로 입력받은 값을 필터링하고 rand()함수를

통해 ()값을 주는 것 같다. 결국 필터링과 rand()함수를 우회하여 date[0]에 2값이 들어가게 하면 된다.

흠.. 그렇다면 필터링을 우회 하면서 2 값을 줄 생각을 해 val=3-1)#을 줘봤다. 

필터링은 우회가 됬는데 rand()함수를 못벗어난다. 다시한번 생각해보니 val값에 2가 없다는 주석이 생

각났다. 하...삽질 ㅜ 그렇다면 val값 대신 union으로 data[0]에 2값을 넣어야 할 것 같다. 필터링 우회

를 위해 val=3-1))%09union%09select%093-1#으로 값을 줬다. 근데 주석이 제대로 안먹히나? 안

된다... 그래서그냥 (값을 맞춰서  val=3-1))%09union%09select%09((3-1로 값을 줬다.

새로 고침 열심히 하다보면 성공!


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

webhacking.kr 9번  (0) 2018.01.09
webhacking.kr 8번  (0) 2018.01.09
webhacking.kr 6번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 6번 문제다.

점수는 100point.

떡하니 힌트를 준다. base64 암호화 방식인 것 같다. index.phps 페이지로 들어가보자.



흠.. guest와 123qwe라는 id,pw값을 20번 base64 방식으로 인코딩한 후 여러 필터링을 걸친 값을 쿠키에 저장하는 것 같다.

그다음 쿠키값을 꺼내 디코딩하고 필터링한 것을 다시 원래대로 돌린 값이 admin,admin이면 문제가 풀리는 것 같다. 그렇다면 쿠키값에 guest값 대신 admin 값을 소스와 같은 방식으로 base64 방식으로 20번 인코딩하고 필터링 한 후 넣어주면 될 것 같다. 이 때 필터링하는게 골치아프겠다고 생각했는데 자세히 보니 필터링하는 과정에서 base64의 경우는 애초에 특수문자가 없기 때문에 필터링 과정을 하지 않고 보내면 자연스럽게 디코딩 작업이 이루어진 것과 같은 효과를 내는 걸로 보였다. 생각한대로 한번 값을 넣어보자.

먼저 admin을 base64 방식으로 20번 인코딩하자. webhacking.kr 사이트에서 인코딩이 가능하므로 40번 한 후 burp suit를 통해 쿠키값에 한번 넣어보았다.

성공!


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

webhacking.kr 8번  (0) 2018.01.09
webhacking.kr 7번  (0) 2018.01.09
webhacking.kr 5번  (0) 2018.01.09
webhacking.kr 4번  (0) 2018.01.08
webhacking.kr 3번  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

소스를 보면 다음과 같다. 버퍼, 환경변수 , 매개변수까지 싹다 막혀있다. 



여기서 한참 생각하다 멘탈이 나갔는데 일단 그냥 gdb로 깐담에 메모리를 쭉한번 봤더니 실행파일명이 스택 거의 마지막부근에 존재하고 있었다.



뭐지?해서 찾아보니 argv[0]에 들어갔던 실행파일명은 소스코드 내 메모리초기화로 인해 초기화 되었지만 스택 내에 내가 몰랐던 요런 구조가 있었다.



맨 마지막에 보면 NULL값위에 프로그램 이름이 저장되게 되는데 요 부분은 코드상에서 메모리 초기화하는 모든 부분에 영향을 안받기 때문에 이걸 활용하면 될 것 같았다.


근데 실행파일명에 쉘코드박아서 익스하는건 이미 했어서 그대로 진행했는데 계속 세그먼트 폴트가 떴다. 도저히 이유를 모르겠어서 삽질좀 하다가 NOP값을 쉘코드 앞뒤에 다 박고 했더니 익스가 됬다. 뭐지?하고 좀 찾아봤더니 이런 이유가 있어서 그랬던거 같다.


http://orang.tistory.com/entry/%EC%89%98%EC%BD%94%EB%93%9C-%EB%92%A4%EC%97%90-%EC%97%AC%EC%9C%A0-%EA%B3%B5%EA%B0%84%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EA%B2%BD%EC%9A%B0


익스는 파일명 쉘코드 삽입형태만 바꾸고 이전의 실행파일명에 쉘코드 박아서 링크걸고 했던것처럼 똑같이  했다.




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

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

JeonYoungSin

메모 기록용 공간

,

webhacking.kr 5번 문제다.

점수는 300point.

? 검은색 화면에 딸랑 로그인 조인 버튼 두개가 있다.

로그인 버튼을 눌러봤다. 

로그인 창을 누르고 아무거나 입력해 들어가보았다.

admin 사용자로 로그인 해야 하는 것 같다. 한번 해보자.

패스워드가 틀렸단다.

흠.. sql injection으로 시도해보려다가 처음 메인화면에 join 버튼이 있었으니 한번 그쪽으로 파고들어

보기로 했다.

흠... 조인버튼이 안먹는다. 뭔가 느낌상 admin사용자로 가입을 해야 할 것 같은데 안넘어간다.

소스부터 확인해봐야 할 것 같다.

흠.. 별다를게 없다.. 여기서 한참 고민하다 login.php가 있는 mem/이라는 경로에 뭔가 있을까 싶어 들어가 봤다.

lucky! join.php란 페이지가 있다. 들어가보면 가입창이 나올 것 같다.

...? 뭐가 없다. 진짜로 사진처럼 까맣기만하다. 흠... 소스를 봐야할 것 같다.

흠... 보아하니 script 부분이 핵심이 인 것 같다. 근데 변수 부분이 너무 지저분하다. 대충 정리를 해보기로 하자. 

정리를 하고 보니 다음과 같이 cookie 값에 oldzombie라는 문자열이 있으면 0이상의 값이 반환되어 if

문을 회피하고 또 URL에 mode=1이라는 값이 포함되어 있으면 정상적인 회원가입 창이 나올 것 같다.

burp suit를 켜서 쿠키값에 oldzombie를 넣고 url에 mode=1을 넣어줬다. 근데 자꾸 이상하게 안된다... 아니 원래 되야돼는건데 뭐지 ㅡㅡ? 한참하다 도저히 안되는 이유를 못찾아서 그냥 크롬 개발자 도구를 썻다.

필요한 코드만 입력했다. admin으로 가입을 시도해봤다.

..? 이미 있네..? 흠.. admin사용자로 가입은 해야될 것 같고 우회를 해서 가입해야할 것 같다. admin 뒤에 공백을 줘서 가입하려고보니 최대길이가 5이다. 딱보니 막아논거 같다. 6으로 늘려 공백을 추가하면 가입이 될것 같은 느낌. 해보자한번.

오.. 하다보니 감각이 생긴다. 그대로 로그인해보자.

성공!


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

webhacking.kr 7번  (0) 2018.01.09
webhacking.kr 6번  (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
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

소스를 보면 argv[2]에 쉘코드 넣고 익스할 수 있는 구존데 한가지 문제가 있다. 리턴주소를 덮을때 메모리 주소가 \xbf\xff 영역이면 안된다. 일반적으로 익스를 하게되면 argv[2] 영역은 무조건 \xbf\xff 올라갔다.

그래서 argv[3] 영역에 쓰레기값을 엄청나게 넣어서 argv[2] 영역의 주소값이 상대적으로 낮아지도록 해서 \xbf\xfe 영역으로 만들어 익스했다.




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

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

JeonYoungSin

메모 기록용 공간

,

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

메모 기록용 공간

,