본문 바로가기

Total52

[Secuinside2017]snake 이번 문제는 지렁이 키우기 게임! 문제 제목은 뱀이지만 지렁이 키우기라 하겠음. 먹이를 하나씩 먹으면서 지렁이를 키워야 하는데 손으로 게임을 이기기엔 시간이 부족할듯? 지렁이 게임을 시작해서 함수를 타고타고 가다보면 스테이지랑 점수로 연산을 하는 부분이 나온다. print_snake에 a1은 지렁이 머리인것 같지만 중요하지 않으니까 무시하고 넘어가고, sub_4011a5로 들어가보면 첫번째 연산 과정이 나온다. 여기서 스테이지 수에 따라 연산해주고 지렁이 길이가 304이상이면 두 번째 연산과정으로 넘어간다. v15는 이 전짜기는 0이라 while문 안으로 안 들어가고 원래 v15가 1일 때 game_over, 2일 때 game_clear로 가는데 마지막 과정으로 가기 위해 임시로 바꿔놨다. 죽으면 v15.. 2018. 1. 14.
passcode passcode를 실행하면 이름, passcode1, 2를 입력받는다. C소스를 보면 welcome함수에서 이름을 크기 100짜리 배열에 입력받고 login함수에서 passcode1, 2를 입력받는데 &가 빠진채로 입력받는다. 원래는 passcode1,2의 주소를 알려줘야되니까 &passcode1이 되어야 하는데 &가 빠진것. gdb로 열어보면 name이 ebp-0x70 ~ ebp-0x10이고 passcode1이 ebp-0x10인데 int니까 ebp-0x10 ~ ebp-0xc가 되서 name과 겹치게 된다. 근데 입력받을 때 &를 빼고 scanf를 사용하니까 name을 입력한 값이 주소가 된다.즉 name에서 끝에 4바이트 값을 aaaa를 넣으면 passcode1에서 주소를 aaaa로 인식하게된다.따라서.. 2018. 1. 14.
[CTF]encrypt 어디 ctf였는지 기억이... 나중에 알아서 수정합니다. encrypt문제는 golang(golang)으로 만들어졌고 flag파일을 읽어와 flag.encrypt파일을 생성한다. ida로 열어보면 main_writeF, main_readF, main_main, main_encrypt가 있는데 main_encrypt에서 readF에서 읽어온 flag파일의 데이터를 가지고 연산을 한다. encrypt함수에서 사용하는 파일 사이즈와 encryptkey 총 3단계로 이루어짐 1. data[i]=readdate[i-4]^readdate[i] (0~4는 연산x) 2. data[i]와data[i+4]위치 바꿈, 8개씩 끊어서 3. encryptkey와 data xor연산 def round1(data): encrypt.. 2018. 1. 14.
#1 환경구축 및 메모리 분석 보호되어 있는 글 입니다. 2018. 1. 7.