목록Training (17)
Never Stop Running
* 리버싱 공부를 위한 문제풀이로 정답을 찾는 것과는 조금 다를 수 있습니다. [CodeEngn] BASIC 03 문제 풀이 환경Windows 10 / Intel / HxD 문제 URLhttps://www.codeengn.com/challenges/basic/03 BASIC 3번 문제. 문제는 스트링 비교함수 이름을 찾는 것이다. HxD라는 헥사 에디터를 사용하여 함수 이름이 모여있는 곳 쪽을 보니 딱 문자열 비교 함수 이름이 적혀있다.
* 리버싱 공부를 위한 문제풀이로정답을 찾는 것과는 조금 다를 수 있습니다.[CodeEngn] BASIC 02 문제 풀이 환경Windows 10 / Intel / HxD 문제 URL https://www.codeengn.com/challenges/basic/02 BASIC 2번 문제.문제는 실행이 되지 않는 파일의 패스워드를 찾는 것이다.HxD라는 헥사 에디터로 실행파일을 열어서 문자열을 쭉 읽어보았다. 'Yeah, you did it!'이라는 성공할 때 나타날법한 문장 뒤로 비밀번호같은 문자열이 보인다.
* 리버싱 공부를 위한 문제풀이로정답을 찾는 것과는 조금 다를 수 있습니다. [CodeEngn] BASIC 01 문제 풀이 환경 Windows 10 / Intel / x32dbg 문제 URLhttps://www.codeengn.com/challenges/basic/01 BASIC 1번 문제.문제는 HDD를 CD-Rom으로 인식시키기 위한 GetDriveTypeA 함수의 리턴값을 찾는 것이다.일단 HDD를 CD-Rom으로 인식시키는 방법들을 찾아본다. 일단 파일을 실행시키면 이러한 창 두개가 뜬다. x32dbg로 열어본다.참고로 [설정] - [환경설정] - [이벤트]에서 시스템 중단점, TLS 콜백을 체크 해제한 상태이다.GetDriveTypeA 함수가 보이기 때문에 함수 내부로 들어가기 전에 Break ..
힌트를 보니 /etc/xinetd.d에 백도어를 심어놓았다고 한다.이 경로로 이동해보니 backdoor라는 파일이 있었다. 파일을 열어보니 finger 서비스가 있었다.(finger 서비스에 대한 자세한 내용)user가 level5이고, server가 /home/level4/tmp/backdoor이기 때문에 level5로 server가 실행된다. server 위치로 가서 backdoor.c 파일을 코딩한다. C언어로 코딩하였고, 이 프로그램 작동 시 my-pass라는 명령어를 실행한다. backdoor.c 파일을 backdoor로 컴파일한다. finger 명령어를 치면 현재 사용하고 있는 사용자 정보가 나온다.여기서 finger @localhost 명령어를 사용하면 실행이 된다. NextID : leve..
힌트를 보니 autodig라는 파일의 소스를 보여주고 있다. 이것을 이용해 level4의 권한을 얻으라는 것을 보아 이 파일에는 level4의 setuid가 걸려있다는 것을 알 수 있다. 그리고 소스파일을 분석해보면 autodig를 실행함과 동시에 인자값을 넣는데 argc = 2가 아니라면 "Auto Digger Version 0.9 Usage : autodig host"라고 출력된다. 만약 인자값이 argc = 2라면 "dig @ argv[1] version.bind chaos txt"라는 것이 system함수를 통해 실행된다. 그러니까 argc = 2인 상태로 쉘을 띄우거나 my-pass를 해야 한다.그러려면 두 가지 이상의 명령어를 한꺼번에 하는 방법을 알아야 하는데 이는 세미콜론(;)을 통해 할 ..
힌트를 보니 텍스트 파일 편집 중에 쉘의 명령을 실행시킬 수 있다고 나와있다.그렇다면 텍스트 파일 편집기에 level3의 setuid가 걸려있고, 그 편집기 사용 중에 명령어를 실행시켜 패스워드를 찾아낸다는 생각을 할 수 있다.일단 find명령어로 level3의 setuid가 걸린 파일을 찾아본 결과 editor라는 파일이 나왔다. editor를 실행시키는 동안 level3의 권한을 가지고 있기 때문에 이 상태에서 밖의 쉘에 명령을 내린다면 level3의 권한으로 명령어가 실행될 것이다.vi는 쉘로 빠져나가지 않고 외부명령어를 실행시킬 수 있는 방법이 있는데 바로 명령어 앞에 느낌표(!)를 붙이는 것이다. id 명령어 실행 결과 uid는 level3인 것을 확인할 수 있다.그렇게 my-pass를 실행시키..
힌트를 보니 level2의 권한으로 setuid가 걸린 파일을 찾으라고 되어있다.find명령어로 루트폴더부터 level2의 권한으로 setuid가 걸린 파일을 찾고 만약 찾은 파일이 오류가 뜨면 /dev/null로 보내게 만들었다. (find명령어 permission옵션에서 +와 -의 차이점은 검색하면 쉽게 나온다.)/bin/ExecuteMe라는 파일 하나가 나와서 실행시켜보았다. level2의 권한으로 한가지 명령어를 실행시켜준다는 메세지가 떴다.우리는 level2의 쉘을 얻으면 되기 때문에 쉘을 띄우는 명령어를 사용했다. id 명령어를 사용하니 uid가 level2인 것을 확인할 수 있었다. my-pass로 비밀번호를 확인하였다. NextID : level2PW : hacker or cracker