System/LOB 14

[LOB_4]goblin

goblin // hackers proof 소스파일을 확인해 어떻게 구성되어있는지 확인해보았다.여기서 프로세스안 스택에서 젤 주소가 높은위치에 환경변수들이 있는데 거기를 가리키는게 environ (환경변수에 대한 포인터) egghunter 로 인해 NULL 값이 나올 때 까지 환경변수에 0을 덮어 씌우니 환경변수는 쓸수없다.그리고 2번째 인자값의 48번째에는 \xbf 가 나와야 프로그램이 종류가 안됨.가용한 부분 esp-=44를 해주었다. i는 우리가 사용할 버퍼가 아니니 40을 기억.환경변수를 이용하지 않으니 ret에 쉘코드를 가리키는 주소를 넣어준다.그럴러면 확인을 해야 하므로 코어덤프를 해줘야한다. tmp 디텍토리에 사본을 생성!./orc `python -c 'print "\x90"*15+"\x31..

System/LOB 2019.07.25

[LOB_3]cobolt

cobolt // hacking exposed 먼저 소스파일을 확인해 어떻게 구성되어있는지 확인해준다.우선 gets함수가 보인다. 알아보니 gets함수는 버퍼크기 상관하지 않고 입력을 받는다 그럼 이 취약점을 이용해 문제를 해결해야한다.그리고 전 문제와 차이점은 main은 인자를 받지않고 gets에도 인자를 받지 않는다는 점이다. 더미값이 없이 buffer의 크기는 16바이트 이다. buffer, sfp 위 ret의 위치를 파악할수있다. 버퍼오버플로우의 여러가지 방식중 환경변수를 이용하는 방법을 선택 “HA”라는 환경변수를 이용할것이기에 환경변수를 가져오는 getenv 함수를 이용해 “crush.c”파일을 생성하고 컴파일 해준다. export 를 이용하여 환경변수 생성해준다. 메모리주소를 예측을 한다고 ..

System/LOB 2019.07.25

[LOB_2]gremlin

gremlin // hello bof world 소스파일을 확인해 어떻게 구성되어있는지 확인해준다. 힌트가 되는 문자 자료형 배열 buffer 의 크기가 16인 것을 확인해 볼수 있다. 다음으로 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴본다. 저는 인텔 문법이 편하므로 인텔 문법으로 보기위해 gdb 에서 set disassembly-flavor intel 명령어를 이용해 intel 문법으로 본다. (이젠 외워야지) 여기서 확인해 보아야할 곳은 스택에 esp 레지스터가 가리키는 곳을 확인해 준다. 변수의 크기를 할당해주기 위해 sub op 코드를 이용하여 esp -= 16을 해준 것을 확인해 볼수 있다. 그리고 아까 c 소스파일에서 조건문이 있었는데 어셈블리 코드..

System/LOB 2019.07.25

[LOB_1]gate

gate // gate 우선 어떤 파일이 있나 확인을 해준다. 컴파일된 gremlin, 그리고 gremlin.c 소스파일이 있다. 소스파일을 확인해 어떻게 구성되어있는지 확인해준다. 힌트가 되는 문자 자료형 배열 buffer 의 크기가 256인 것을 확인해 볼수 있다. 다음으로 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴본다. 저는 인텔 문법이 편하므로 인텔 문법으로 보기위해 gdb 에서 set disassembly-flavor intel 명령어를 이용해 intel 문법으로 본다. 여기서 확인해 보아야할 곳은 스택에 esp 레지스터가 가리키는 곳을 확인해 준다. 변수의 크기를 할당해주기 위해 sub op 코드를 이용하여 esp -= 256을 해준 것을 확인해 볼수..

System/LOB 2019.07.25