본문 바로가기

passcode 일단 위의 소스코드를 보면 scanf로 값을 입력받는 부분의 변수가 전부다 &이 빠져있는 것을 볼 수 있다. 이러한 경우에는 변수에 값을 저장하는 것이 아니라 변수의 주소를 지정하게 된다. 따라서 이러한 오류를 이용하여 flag를 얻어내자! 1) 2) 1번의 0x0804862f를 보면 edx를 ebp-0x70의 공간만큼 간접 참조?를 하고 있는 것을 볼 수 있다. 그리고 0x08048632를 보면 edx는 scanf에 의해서 값을 입력받게 되는 것을 알 수 있다. 2번의 0x0804857c와 0x0804857f를 보면 ebp-0x10의 공간을 간접 참조하는 것을 알 수 있다. 여기서 중요한 것은 1번에서 scanf로 입력받은 값중에 마지막 0x10 즉 4바이트는 passcode의 주소가 된다. 따라서 자.. 더보기
random random.c의 소스코드이다. 위의 if( (key ^ random) == 0xdeadbeef) 부분에서 난수값과 key값을 xor연산을 해주어 0xdeadbeef가 되면 flag를 볼 수 있는 것을 알 수 있다. 브레이크 포인트를 4005fc와 400624 두 개를 잡아줬다. 이 두개를 잡은 이유는 난수가 스택에 어떤 위치에 저장이 저장이 되는 지 보기 위해서 이다. 위의 그림을 보면 난수의 값은 0x7fffe95fa1c에 저장된 것을 알 수 있다. 그리고 그 값은 0x6b8b4567이다. xor연산은 2개의 2진수의 값이 서로 다르면 1 같으면 0이 되는 연산인데 0x6b8b4567은 2진수로 01101011100010110100010101100111이고 0xdeadbeef는 110111101010.. 더보기
우분투 명령어 기초 - ls, cd, mv, cp * ls : 현재의 디렉토리에 저장되어 있는 것을 리스트형식으로 보여준다. 옵션 F : 파일 유형을 나타내는 기호를 파일명 끝에 표시 (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'로 나타난다.)l(알파벳 엘) : 파일에 대한 상세한 정보를 보여준다.a : 모든 파일을 보여준다 = 숨김파일도 보여준다.t : 파일이 생성된 시간별로 표시C : 도스의 'dir/w'과 같이 한줄에 여러개의 정보를 표시R : 도스의 'dir/s'명령과 같이 서브디렉토리 내용까지 보여준다. ex) ls -al ls -aC ls -R ls -a ls -l 등이 있다. * cd : 디렉토리 변경 ex) cd .. : 이전 디렉토리로 이동 cd /home/what : /home/what으로 이동 cd / : 가장 상위에.. 더보기