Wargame Site
-
|webhacking.kr| #3Wargame Site/Webhacking.kr 2019. 7. 2. 09:32
한줄에 체크되있어야하는 블록의 개수를 의미하는 것 같다. 떨어져있으면 나눠서 기입하고 연속되어 있으면 counting 하는 방식이다. 다음과 같은 페이지가 나왔다. 바로 소스를 보도록하자. 해당 입력란은 POST 방식으로 전송되는 것을 알 수 있다. 의문이 드는 점은 위의 'kk' 라는 form 이다. GET 인자들을 모두 지운 뒤, 요청을 보내보았다. answer 에 들어가는 값은 그렇다면 어떤 값일까? POST 로 전송되는 무언가가 있기 때문은 아닐까? 하는 생각이 들었다. 소스보기의 value 값이 들어간것으로 보인다. value 값을 수정한 뒤 전송을 한 결과 value 값 그대로 올라간 것을 알 수 있었다. 입력값에 따라 반응이 달라진다는 것은 취약점이 분명하게 존재한다고 한다. 이 부분을 적절..
-
|webhacking.kr| #2Wargame Site/Webhacking.kr 2019. 7. 2. 07:48
처음 이 문제를 만났을 때 '어쩌라는거지?' 라는 느낌 뿐이었다. 메인 화면에서부터 뭔가 Hacker 가 만든 Smell 이 난다. 소스를 분석해보니 Map Tag 가 눈에 띄었다. 이를 통해서 다양한 Path 로 접근할 수 있는 것을 알 수 있었다. 그 중 제일 눈에 갔던 건 단연 admin 이었다. 위치를 분석해보니 우측의 용머리를 누르면 이동하는 것이었다. 오호라 뭔가 중요한 페이지임이 틀림없다. 조금의 망설임없이 SQL injection 을 다양하게 시도해봤다. 하지만, 끄떡없었다. admin Page 를 잠시 뒤로 하고, 게시판을 둘러보던 중 특이한 글을 발견했다. 설마 이건 Brute Force ??..... 아니겠지 ㅋㅋ 하지만, 패스워드를 알아내야하는 것은 맞는 듯 하다. 문제해결단서 문제..
-
|webhacking.kr| 회원가입하기Wargame Site/Webhacking.kr 2019. 6. 30. 12:46
web 취약점을 학습하는 사이트로 유명한 webhacking.kr 에 도전장을 내밀었다 회원가입부터 문제라고 익히들었기 때문에 바로 소스보기를 했다. 막 뒤적이던 중 주석처리가 되어있는 td 를 발견했다. HTML 에서 주석을 담당하는 이 녀석을 소거하고 나니 숨겨져 있던 회원가입 버튼이 나왔다. decode me 란에 있는 값을 base64 방식으로 3번 디코딩하고 나니 115.92.157.62 가 나왔다. 바로 나의 외부 아이피 값이였다. decode me 란에 입력하면 된다. 이로써 회원가입 완료!! 게임을 시작하지
-
|Lord Of Bufferoverflow| #17 zombie_assassin - succubusWargame Site/BOF 2019. 6. 29. 21:55
우선 main 함수를 보면 RET 부분부터 104 개의 문자를 수용하고 있다. 그렇다! Chaining 에 관련된 개념을 사용하는 문제이다. check 라는 변수를 조절하는 함수를 모두 거쳐야 문제가 해결되는 것이다. DO - GYE - GUL - YUT - MO 순서로 실행하는 바이너리를 작성해보자. 우선, RET 를 DO 로 맞추어주어야한다. 인자가 없기 때문에 DO 의 주소만 맞춰주면 될 것이다. [ DO 의 주소 ] + [ ret 에서 pop eip 로 인해 생긴 공간 = DO 가 실행되고 난 뒤 실행되는 위치 ] + [ DO 의 프롤로그 에필로그 과정 ] 다음과 같이 동작할 것이다. 따라서 !! [ DO 의 주소 ] + [ 제2의 함수 주소 ] + [ 제3의 함수 주소 ] + .... 다음과 같..
-
|Lord Of Bufferoverflow| #16 assassin - zombie_assassinWargame Site/BOF 2019. 6. 29. 19:50
먼저 세팅먼저하도록 합니다 ^^ 1 바이트라도 차질이 생기면 문제에 지장이 있으므로 이번에도 한 글자만 바꿔서 접근하도록 한다. FEBP ( Fake EBP ) 이 기법은 앞서 접근했던 방식 중의 하나로, EBP 를 조작한 뒤, RET 부분을 leave 에 맞춰서 EIP 의 흐름을 바꿔버리는 녀석이다. 하지만, 앞서 풀었던 방식과 다른 것은 LEAVE 부분을 직접 돌려주어야 한다는 점이다. ( 이 차이는 생각보다 중요한 개념인 것 같다. ) 그렇다면, 앞의 문제 ( gloem-darkknight ) 에서 변화되는 내용은 무었일까? [ System 의 주소 ] + AAAA (EBP 역할) + [ /bin/sh 의 주소 ] + ..... + [ Buffer 시작 - 4 (마지막 1Byte) ] 그렇다!! 단..
-
|Lord Of Bufferoverflow| #15 giant - assassinWargame Site/BOF 2019. 6. 23. 18:33
RET 에 제약조건이 붙어있는 문제이다. \xbf (stack 영역), \x40 (lib 영역) 이 불가하다. 그럼 또 다른 어딘가에 내가 입력한 값을 이용할 영역이 있다는 것이다. 가만 생각해보니 RET 구역에 80 으로 시작하는 코드를 넣어본 적이 있는 것 같다. 바로 objdump 를 이용해서 leave 로 코드를 돌렸던 문제이다. RET 이후를 제외하고 SFP 와 Buffer 가 날아가는 문제이다. 만약 RET 를 다시 ret 로 보낸다면 EIP 를 원하는 곳으로 조정할 수 있을 것이다. 작전을 세워보자. RET 부분을 80 지점의 다른 ret 로 돌리면 다음과 같은 전체적인 그림을 그릴 수 있다. "A"*44 + "\x36\x83\x04\x08" + [ system 주소 ] + [ system ..
-
|Lord Of Bufferoverflow| #14 bugbear - giantWargame Site/BOF 2019. 6. 23. 17:04
아따~ 길다.. 하지만, 자세히 보면 그렇게 어렵지 않은 코드임을 알 수 있다. 중간에 친절하게 주석처리까지 되어있는 것을 알 수 있다. // gain address of execve ,//end 인 것으로 알 수 있 듯, execve 의 주소를 가져오는 것이다. 그리고 RET 에 execve 의 주소를 잘 넣어줬는지 확인하는 코드가 보인다. 즉, execve 를 ret 로 두어 문제를 해결해야하는 것이다. 24 번째 줄에서 보이는 저녀석이 걸림돌이 된다. 기존의 풀이 방식을 파헤쳐보면 Core 분석 및 디버깅을 위해 실행파일을 복사했다. 실행파일을 복사하면, 우리의 권한으로 파일을 실행시킬 수 있기 때문에 Core 가 생기며, Core Analysis 를 할 수 있었다. 만약, 이문제에서 giant 를..