본문 바로가기

분류 전체보기

(214)
Basic_BOF#1 char형 변수와 int형 변수를 하나 선언 int형변수값을 67305985로 초기화 fgets로 s에 45바이트만큼 입력 받음 첫 if문에서 int형 변수의 값이 변했고 -559038737가 아니면 You are on the right way 출력 두번째 if문에서 int형 변수가 정확히 -559038737이면 쉘을 실행시킴 입력은 s만 받고 int형 변수는 건드리는 부분이 없고 제목을 봐서 buffer overflow를 이용해서 입력받은 s를 넘치게해 int를 원하는 값으로 바꿔야함 gdb로보니 원하는 값은 0xdeadbeef인거 같음 일단 s에서 int형 변수까지의 거리를 구함 int형 변수의 위치는 ebp-0xc s의 위치는 ebp-0x34 0x34 - 0xc = 0x28(40byte) offse..
heap2 구조체 auth에 32바이트 name과 auth가 있음 실행 후에 fgets로 입력을 받고 'auth '면 auth이후에 값을 auth->name에 저장 'reset'이면 free(auth) 'service'면 service이후의 문자를 저장 'login'이면 auth->auth의 값이 0이아니면통과 0이면 불통 문제가 좀 애매함 UAF(Use After Free)취약점을 원하는 것 같은데 auth를 malloc할 때 auth구조체 만큼 동적할당 하는 것이 아니고 4바이트만 할당해서 딱히 free를 안해도 클리어 됨 일단 UAF는 동적할당을 한뒤에 free()를 하면 메모리에서 사라지는 것이 아님 free를 하고 같은 크기의 동적할당을 하면 free된 메모리를 씀 auth 1234로 구조체를 동적할당으로..
heap1 malloc이 4번있고 strcpy가 두 번있음 더블strcpy를 이용해서 winner를 샐행시켜야함 인자를 2개 주어야함 첫 malloc이후 bp를 걸어 동적 할당된 메모리 주소를 찾음 인자로 aaaa bbbb를 준고 run 2번째 strcpy가 실행된 이후 heap의 상태를 확인 4개의 malloc이후 정상적으로 aaaa와 bbbb가 삽입됨 앞의 코드에서 name은 포인터 변수이기 때문에 aaaa와 bbbb는 빨간 동그라미의 주소에 들어간 것을 알 수 있음 첫번째 인자다음 i2->name의 주소까지 20바이트 그래서 첫번째 인자로 20바이트를 채운다음 3번째로 동적할당 받은 i2->name의 주소를 printf의 got로 바꿔서 두번째 인자를 winner의 주소를 주면 두번째 strcpy로 인해 pr..
heap0 heap overflow를 이용해 winner()를 실행시키면 pass 그림처럼 malloc으로 128바이트를 동적할당 할 시 앞에 type과 size가 8바이트를 차지하고 밑의 data가 동적할당한 크기만큼 생성이되며 더 밑에 footer가 붙을 수도 있음 일단 첫 malloc과 2번째 malloc으로 할당된 메모리의 주소 d와 f가 가진 주소를 찾음 이 주소는 위의 heap의 구조 그림에서 type의 시작번지가 아닌 data의 시작번지를 반환해서 eax에 넘겨줌 main+21, 37에 bp를 걸어주고 AAAA를 인자로 주고 run d의 data주소는0x804a1a0 f의 data시작 주소는 0x804a1f0 strcpy가 동작한 후인 main+107부분에 bp를 걸고 d의 data주소-0x8 (typ..
리버싱 https://codeengn.com/challenges/ CodeEngn.com [코드엔진] - Challenges 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰 주제로 소프트웨어 보안에 대한 다양한 시각과 연구주제에 대한 정보공유를 추구하고 있으며, 상업적 이익 없이 작은 예산으로 운영하고 있어 큰 예산으로 운영하는 다른 컨퍼런스에 비해 여러 가지로 부족 할 수 있습니다. codeengn.com http://reversing.kr/challenge.php Reversing.Kr Copyright © 2012-2020 Gogil All Right Reserved. re..
시스템 https://old.liveoverflow.com/binary_hacking/protostar/index.html Protostar - LiveOverflow This video introduces http://exploit-exercises.com, how to connect to the VM with ssh and explains what setuid binaries are. old.liveoverflow.com http://pwnable.kr/ http://pwnable.kr/ there are flag files corresponding to each challenges (similar to CTF), you need to read it and submit to pwnable.kr to get ..
format4 FSB를 이용해 exit()가 아닌 hello함수가 실행되게함 exit의 got를 hello의 got로 변조 시키면 exit가 아닌 hello를 실행 가능 이전 문제처럼 3부분으로 나누어서 넣음 08/484/b4 b4먼저 vuln의 exit를 call하는 부분에 브레이크 포인트 걸어두고 gdb 에서도 파일을 인자로 줄 수 있음 b4가 들어감 다음 484 484도 잘 들어감 마지막 08 hello의 주소를 다 넣음 continue해보면
format3 target의 값을 0x01025544로 만들면 pass AAAA는 12번째 'AAAA'+target의 주소를 넣고 13번째에는 %n을 넣어 변조 target의 값이 68로 바뀜 이전 문제처럼 0x01025544를 바로 넣어도 되고 3부분으로 나누어서 01/0255/44 이렇게 넣어줘도됨 3부분으로 나누어 넣어줄 땐 밑줄친 부분 AAAA, BBBB, CCCC 다음이 01/ 0255/ 44 가 들어갈 주소임 target의 주소+1,2,4 이렇게 3부분으로 넣음 4부분으로 나누어서 넣는 것도 가능 44를 넣어주어야 하는데 이미 70임 데이터를 빼줄수는 없기 때문에 144가 되게함 0x144 - 0x70 = 212 212+8 144가 되어도 다음 255를 넣을때 1이 255에 덮혀지기 때문에 상관 없음 14C..