반응형 전체 글992 5단계 orc -> wolfman 전 단계 소스코드에서 하나 더 추가되었다. 이번에 추간된 소스코드는 버퍼를 0으로 초기화시켜 버퍼 안에서 쉘 코드를 실행하는 것을 막는 코드이다. 그러나 전 단계처럼 쉘코드를 argv[2]에 넣어하면 되므로 쉽게 풀 수 있다. argv[2] 주소를 찾아보자 주소는 대략 0xbffffc44를 사용하면 된다. argv[1] : dummy(44byte) + 0xbffffc44(4byte) argv[2] : \x90(100byte) + shellcode(25byte) 이렇게 넣어 exploit을 할 것이다. 성공~! 2019. 9. 7. 4단계 goblin -> orc 소스코드를 분석해보면 두 가지 코드가 더 추가되었다. 환경변수를 사용하지 못하게 모두 0으로 초기화하는 코드 RET 부분 스택에 무조건 '\xbf'로 시작하는지 확인하는 코드 할 수 있는 방안은 환경변수 영역을 안쓰고 RET 부분에 무조건 \xbf문자열을 넣는다는 것이다. 이번에도 아까처럼 argv[2]에 NOP+SHELL을 넣고 exploit을 해보겠다. 환경변수 영역이 아니니 상관이없고, argv[2]의 주소 값은 \xbf로 시작하니 두 조건에 다 만족하므로 exploit이 가능하다. argv[2] 주소 값을 찾아보자. 대략적으로 0xbffffc34를 사용하겠다. argv[1] : dummy(44byte) + 0xbffffc34 argv[2] : \x90(100byte) + shellcode(25by.. 2019. 9. 7. 3단계 cobolt -> goblin 이번에도 버퍼 크기가 작고 함수만 gets으로 달라졌다. NOP+SHELL RET [4] SFP [4] Buffer [16] 이번에는 ret 위쪽 스택영역을 이용하여 exploit을 시도할 것이다. 첫 번째로 주소 값을 구해보자. 대략적으로 0xbffffb34를 사용하면 될 거 같다. dummy(20byte) + 0xbffffb34(4byte) + \x90(100byte) + 쉘 코드(25byte) 이렇게 하여 exploit을 해보자. [그림 1-3] exploit을 성공한 것을 볼 수 있다. 2019. 9. 6. 2단계 gremlin->cobolt 이번에는 소스코드를 보면 버퍼 크기가 너무 작다... 너무 작아서 쉘 코드도 다 들어가지 않는다. 버퍼를 이용하지 않고 매개변수 argv[2]를 이용하여 exploit을 수행할 것이다. gdb를 이용해 arg[2]의 주소 값 위치를 알아보자. 대략적으로 0xbffffc10로 잡으면 될 것 같다. 이제 준비는 끝났다. argv[1] = dummy (20byte) + 0xbffffc10 argv[2] = \x90 (100byte) + 쉘 코드 이렇게 exploit을 해보자. exploit을 성공한 것을 볼 수 있다. 2019. 9. 6. 1단계 gate -> gremlin 처음 어떤 파일이 있나 확인해보면, gremlin의 권한을 가지고 있는 실행 파일과 소스코드가 존재한다. gremlin.c 파일을 cat 명령어로 확인을 해보면 소스코드가 존재한다. 소스 코드를 분석해면 취약한 함수 strcpy()가 존재하는 것을 알 수 있다. 그렇다면 exploit이 가능하다. exploit 준비를 해보자. 첫 번째로 gdb 툴을 이용해 실제 스택 영역에 소스코드에 나온 데로 256byte를 사용하는지 확인해보자. 이렇게 어셈블리어를 확인해보면 실제 소스코드에 나와있는데로 256byte를 사용한다. 메모리 구조를 확인하면 RET [4] SFP [4] buffer [256] 이렇게 되어있다. 저기를 exploit 하기위해 총 260byte에 0x90과 쉘 코드를 넣고 ret에는 0x90.. 2019. 9. 6. SQL Injection (UNION) UNION 연산자를 이용하여, UNION 연산자가 포함된 공격 쿼리를 주입하여 DB의 데이터를 획득한다. UNION은 둘 이상의 SELECT 문에서 검색된 레코드를 단일 집합으로 결합해주는 연산자다. UNION과 UNION ALL 이 존재한다. UNION은 중복을 제거한 결과의 합을 나타내고, UNION ALL은 중복을 포함한 결과의 합을 나타낸다. UNION 예제 select 'test' unison select 'good'; 결과 test ----- test good UNION 문법 SELECT... UNION [ALL | DISTINCT] SELECT... [UNION [ALL | DISTINCT] SELECT...] UNION 연산자는 두 개의 SELECT문 사이에 위치하며 데이터 형만 호환된다면.. 2019. 9. 5. 이전 1 ··· 161 162 163 164 165 166 다음 반응형