본문 바로가기

overthewire :: Vortex level9 by ORANG 더보기
overthewire :: Vortex level8 by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: ascii_easy 33pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: dragon 75pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: simple_login 50pt by ORANG 보호되어 있는 글입니다. 더보기
pwnable.kr :: flag 7pt by ORANG 보호되어 있는 글입니다. 더보기
overthewire :: Vortex level7 by ORANG CRC32의 취약점을 이용한 문제 코딩자체보다는 CRC32 알고리즘을 이해하는데 시간이 더 들었다.. http://anch0vy.tistory.com/60 -> anch0vy님이 쓴 글이 도움이 많이 되었다. 내가 이해한대로 기록해두자면..CRC32(cyclic redundancy check)는 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식이다.미리 만들어진 256개의 테이블을 통해 1바이트 단위로 계산하는데,'>>8' 과정에서 최상위 바이트가 0이 되므로, 테이블의 최상위값 바이트가 남게된다.이를 통해 해당 테이블을 알아낼 수 있다. 또, 1바이트 단위로 시프트 연산이 진행되므로CRC32 는 4바이트(32bit), CRC64 는 8바이트(64bit)만 조작할 수 있다 면역연산 과정을 통.. 더보기
pwnable.kr :: tiny_easy 30pt by ORANG 보호되어 있는 글입니다. 더보기
overthewire :: Vortex level6 by ORANG 헥스 레이로 보면.. if(*(_DWORD *)a3) 일경우 restart(*argv)함수가 호출된다.restart함수에서는 *argv에서 그대로execlp(argv[0], argv[0], 0)으로 이어지므로, argv[0]에 실행시킬 파일명을 넣어주면 된다. 일반적으로 main(int argc, char **argv, char **env)이면ebp -> SFPebp+4 -> RETebp+8 -> argcebp+12 -> argvebp+16 -> env인자 전달시 이런식으로 진행된다. gdb로 간단하게 분석해보자면.. 0x0804846f :mov 0x10(%ebp),%eax 0x08048472 :mov (%eax),%eax 0x08048474 :test %eax,%eax 0x08048476 :je 0x8.. 더보기
overthewire :: Vortex level5 by ORANG 글자수는 5글자, 브루트 포싱을 통해 패스워드를 알아내야한다. 주어진 소스를 수정해, 브루트 포싱을 위한 코드를 작성했다. 수정된 main함수 부분브루트 포싱하는데 속도가 느려..아스키 코드에서 특수문자+문자 부분인 0x21~0x7E 부분으로 제한했다. 계속 buf 출력이 바뀌어서 헤맸는데.. 아주 사소한 부분이 문제가 되었다.시행착오 끝에 코드 완성 삽질의 끝은 역시 개뿌듯..!! 더보기