풀이

    webhacking.kr Level 10 문제풀이

    webhacking.kr Level 10 문제풀이

    Level 10 O 소스코드에서 중요한 부분만 가져왔다. 해석하자면 id가 hackme이고 'O' 라는 문자의 위치는 (0,0)이다. 그리고 클릭할 때 마다 left좌표가 1씩 증가한다. 즉, 오른쪽으로 1씩 움직이게 된다. if문을 통해 left좌표가 800이 되면 ?go=800이 url에 추가되면서 이동한다. 그리고 'O'문자 위에 마우스를 올리면 'yOu'라고 표시된다. 처음 이문제를 풀때 크롬에서 풀었다. 클릭해도 아무런 반응이 없고, url에 ?go=800을 넣으면 'no hack'이라는 문자열이 출력되어서 쿼리문을 우회해서 푸는 문제인줄 알고 30분간 엄청난 삽질...💢♨️ 혹시나 하고 Internet Explorer로 실행하니 클릭할 때마다 정상적으로 움직인다. (하아...💢)이번일을 꼭 기..

    [CodEngn]Basic RCE_Level 10 문제풀이

    [CodEngn]Basic RCE_Level 10 문제풀이

    파일을 실행시켜 보자. PEiD로 살펴보니 ASPack 2.000 이라는 것으로 실행압축되어 있다. ASPack이 뭔지 알아보자. 먼저 올리디버거로 OEP를 찾아낸다. 00445834 가 OEP 주소가 된다. 그리고 OllyDump를 이용하여 언팩킹을 한다. 언팩킹 후 OEP주소를 가보면 정상적으로 언팩킹 된것을 볼 수 있다. 이후 String값을 확인해 보니, "Registered ... well done!" 이라는 등록 성공 메시지가 보여진다. 해당 주소로 찾아가서 분기점을 찾으면 끝날 것 같다. 확인 결과 분기점의 OPCODE는 75 55 가 된다. 따라서 최종 정답은 004458347555(OEP주소 + 분기점 OPCODE)

    [CodEngn]Basic RCE_Level 09 문제풀이

    [CodEngn]Basic RCE_Level 09 문제풀이

    StolenByte를 구하라고 문제가 나와있다. StolenByte가 무엇일까? StolenByte 는 훔친 바이트란 의미로 프로그램의 한부분의 코드를 훔쳐내어 다른 부분으로 옮겨진 코드를 말한다. 주로 옮겨지는 코드는 엔트리 포인트위의 몇개의 코드들이며 옮겨진 코드들은 OEP 주소로 점프하기 전에 위치에서 PUSH 된다.이러한 StolenByte 는 주로 패커가 프로그램을 패킹할때 볼수있다. 이렇게 옮겨진 코드들은 할당된 메모리 공간에서 실행된다. 이때문에 패킹된 프로세스가 덤프될때 StolenByte를 복구하지 못하면 프로그램은 정상적으로 작동하지 못하게 됩니다. 실행시켜 보자. keyfile을 check한다는 박스가 뜨고 '확인' 버튼을 누르면 파일을 찾을 수 없다는 메시지 박스가 출력된다. upx..

    [CodEngn]Basic RCE_Level 08 문제풀이

    [CodEngn]Basic RCE_Level 08 문제풀이

    파일의 OEP를 구하면되는 간단한 문제이다. 파일을 실행시켜 보면 계산기 프로그램이 실행된다. PEiD로 확인해 보니 해당 파일은 UPX로 실행 압축되어 있다. upx를 이용하여 압축을 해제하여 OEP를 확인 하면 될 것 같다. OEP는 01012475 이다.

    [CodeEngn]Basic RCE_Level 07 문제풀이

    [CodeEngn]Basic RCE_Level 07 문제풀이

    Level 06에 이어서 Level 07을 풀어보겠습니다. 실행해 보니 위와 같은 메시지가 출력됩니다. C드라이브의 이름이 "CodeEngn"일 경우 시리얼이 생성된 다는 것을 보니.. 프로그램 내부에서 C드라이브의 이름 값을 가져오는 함수가 있을 것 같네요. 그리고 Serial을 넣는 프로그램이지만, 문제 자체에서 CodeEngn이 어떤것으로 변경되는지 찾는 문제 이기에 Serial값을 찾는 것 보다는, CodeEngn이 어떻게 변경되는지 초점을 두어 분석하면 될 것 같습니다. 올리디버거에서 코드부분에 우클릭하여 "All intermodular calls"를 클릭하면 프로그램에서 불러오는 함수들의 목록을 볼 수 있습니다. 예상 했던 것과 같이, 드라이브의 정보를 받아오는 함수가 존재합니다. 해당 부분에..

    [CodeEngn]Basic RCE_Level 06 문제풀이

    [CodeEngn]Basic RCE_Level 06 문제풀이

    Level 05에 이어서 06도 풀어봅시당. 문제를 보니 Unpack를 해서 OEP주소와 Serial 값을 알아내면 되는 문제입니다. 한번 실행해 봐야 되겠죠? 위와 같이 잘못 된 Serial 값을 넣으면 "Wrong serial!!!"이라는 메시지가 출력됩니다. 문제에서 Unpack을 하라고 했으니, 어떤 압축이 되어 있는지 PEiD로 확인해 봤습니다. 역시나 UPX로 실행 압축 되어 있음을 확인 했습니다.UPX 압축해제 하는 방법은 Level 05과정을 참고(아래링크) 하시면 됩니다. 2018/04/10 - [Study :)/WarGame] - [CodEngn]Basic RCE_Level 05 문제풀이 압축 해제 후, 보여지는 처음 주소가 OEP 주소가 됩니다. 이제 Serial값만 찾으면 됩니다. ..

    [CodeEngn]Basic RCE_Level 05 문제풀이

    [CodeEngn]Basic RCE_Level 05 문제풀이

    Level 05를 풀어보자. 단순히 Serial Key를 찾는 문제인것 같다. 프로그램을 실행시켜보자. 입력창이 2개가 있다. 추측건데 윗부분은 User Name 부분이고, 아랫부분은 Serial 부분인것 같다. 'Register now !' 키를 눌러보면, 다음과 같은 메시지창이 뜬다. 올리디버거로 실행하여 보자. compressed 를 감지했다는 메시지가 뜬다. 즉, 실행파일압축되어 있다. PEiD와 PEview로 확인해보니 UPX로 실행압축 되어 있음을 확인 할 수 있다. 올리디버거에서 UPX압축 해제할 수도 있지만, UPX unpack 프로그램을 사용하면 쉽게 압축해제 가능하다. 해당 파일은 upx 실행 파일이 있는 곳으로 옮기고 다음 명령어를 입력하자. 05.exe 파일을 upx 압축해제하여 0..

    [CodEngn]Basic RCE_Level 04 문제풀이

    [CodEngn]Basic RCE_Level 04 문제풀이

    Level 04를 풀어보자. 문제를 확인해보면 디버거를 탐지하는 함수가 내장된 프로그램이라고 한다. 실제 실행해보면 '정상'이라는 문자가 계속 출력된다. 하지만, 올리디버그로 실행하다 보면 '디버깅 당함'이라는 문자가 계속 출력된다. 이것도 역시 Level 03과 마찬가지로, 함수 이름을 찾아내는 문제이므로 PEview를 이용하면 쉽게 답을 찾을 수 있다. 올리디버그로도 확인 가능하다. 올리버그로 실행하여 한줄씩 디버그 하다보면, '디버그 당함'이라는 문자가 출력되는 함수가 있다. 해당 함수를 타고 들어가서 한줄씩 실행해보면, 또 '디버깅 당함'이라고 출력되는 함수가 있다.