분류 전체보기
-
Stack6 풀이System hacking training/Protostar 2018. 2. 16. 21:20
[문제] 문제를 보면 쉘코드를 올려서 문제를 풀 수 없도록 되어있네염 0xbf로 시작하는 모든 주소는 예외처리에 걸리기 때문이지요~ㅎ 하지만 취약점은 존재합니다. 역시나 gets()를 사용하였기 때문에 bof 취약점이 존재하는데요. 쉘코드를 쓸 수 없지만 쉘을 띄우기 위해서는 RTL이라는 기법을 쓸 필요가 있겠네요~ 보면 메인은 별게 없고, getpath()를 보면 총 스택공간을 0x68 (dec : 104) 만큼 할당하고 ebp-76이 buf의 시작주소임을 알 수 있습니당 그렇다면 SFP까지 총 80 byte 더미값을 채우고 system()를 return address로 덮고, 인자값을 주기 위해 더미 4 byte 채운뒤 /bin/sh이 위치한 주소를 적어주면 system("/bin/sh")가 실행되어..
-
ELF Technique - RTL(Return To Library)System hacking training/Knowledge 2018. 2. 16. 16:58
RTL이란? return to library 의 약자이고 linux에서는 return to libc라고 불리기도 한다.(linux에서 library가 libc) 이 기법을 이용하면 프로그램에 system()가 없어도 라이브러리의 system()를 호출하여 사용이 가능하다. 이 기법을 익히기 전에 먼저 알고가야할 것들이 있다. 바로 plt와 got이다. plt 란?procedure linkage table의 약자로, 사용자가 만든 함수는 plt를 참조할 필요가 없지만 외부 라이브러리에서 가져다 쓸 경우 plt를 참조하게 된다.예를 들어 우리가 바이너리에서 만든 함수들 (main(), func() 등)은 plt를 참조할 필요가 없다.plt는 어떤 함수들이 나열되어있는 테이블이라고 생각을 하고 넘어간다. go..
-
gdb 명령어System hacking training/Knowledge 2018. 2. 13. 21:56
gdb -q [binary] gdb 조용히 켜기run (r) 바이너리 실행continue (c) 다음 bp 까지 실행quit (q) 바이너리 종료disas [function name] 특정함수의 어셈블리 코드 출력info [function] 함수의 정보를 출력 [break] bp(break point)의 정보 출력[register] register의 정보 출력 info break 했을 때 bp정보가 보이는데, 이중delete (del) 모든 bp 제거delete (del) [number] 특정 bp 제거 info function 할때는 바이너리 시작 전에 해야한다. -> 공유라이브러리까지 모두 출력하기 때문(지저분) break (b) function 함수에 bp를 건다.함수 프롤로그를 skip 한다. b..
-
ELF Memory Protection - DEP/NXSystem hacking training/Knowledge 2018. 2. 10. 21:44
DEP란? Data Execution Prevention의 약자로 데이터 영역에서 코드가 실행되는 것을 막는 메모리 보호 기법이다. 예를 들어 bof 취약점이 있는 프로그램을 exploit 하기 위해 return address를 쉘코드의 주소로 변조하였다고 하면 DEP가 걸려 있지 않은 경우라면 바로 쉘코드가 실행되겠지만 DEP가 걸려있는 경우라면 실행권한이 없기 때문에 쉘코드를 실행하지 않고 프로그램에 대한 예외처리 후 종료된다. 실습을 하기 위해 프로그램 하나를 만들었다. [DEP_test.c] 간단히 bof 취약점이 존재하는 프로그램이다. gets() 에 의해 bof가 발생된다. 먼저 모든 메모리 보호기법을 꺼놓고 bof 공격을 해봤다. 컴파일 옵션은 이러하다. gcc -o DEP_test DEP_..
-
[!시간낭비 주의] ELF Memory Protection DEPtmp/[?] trouble [!] 2018. 2. 7. 14:28
참고 : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ DEP란? Data Execution Prevention의 약자로 데이터 영역에서 코드가 실행되는 것을 막는 메모리 보호 기법이다. 예를 들어 bof 취약점이 있는 프로그램을 exploit 하기 위해 return address를 쉘코드의 주소로 변조하였다고 하면 DEP가 걸려 있지 않은 경우라면 바로 쉘코드가 실행되겠지만 DEP가 걸려있는 경우라면 실행권한이 없기 때문에 쉘코드를 실행하지 않고 프로그램에 대한 예외처리 후 종료된다. 실습을 하기 위해 프로그램 하나를 만들었다. [DEP_Check.c] gets()의 사용으로 인해 bof 공격이 가능한 프로그램이다. 스택에서 st..
-
[2010] Problem A. Odd Man OutProgramming/Google Code Jam 2018. 2. 6. 16:18
URL : https://code.google.com/codejam/contest/438101/dashboardProblem You are hosting a party with G guests and notice that there is an odd number of guests! When planning the party you deliberately invited only couples and gave each couple a unique number C on their invitation. You would like to single out whoever came alone by asking all of the guests for their invitation numbers. InputThe fir..
-
ELF Memory Protection - ASCII ArmorSystem hacking training/Knowledge 2018. 2. 6. 09:55
참고 : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ ASCII-Armor이란? 직역하면 아스키 갑옷이라는 것으로 RTL 공격에 대응하기 위해 사용된다. RTL은 Return To Library의 약자이고, Return address에 libc내의 함수를 덮어씌워 쉘코드 없이 exploit하는 것이다. libc라는 공유라이브러리 내 함수로 리턴을 하여 프로그램의 실행 흐름을 조작하는 공격이기 때문에 운영체제에 ASCII-Armor 보호 기법이 적용되어있다면 공격자가 라이브러리를 호출하는 공격을 한다고 해도 NULL바이트가 삽입되므로 쉽게 exploit을 허용하지 않는다.
-
ELF Memory Protection - ASLRSystem hacking training/Knowledge 2018. 2. 6. 08:06
참고 : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ 오늘은 리눅스에서 메모리 보호기법에 대해 정리를 해보겠습니다. 먼저 메모리 보호란?-> 컴퓨터 메모리의 사용을 제어하는 방법이다.모든 운영체제에서 중요한 쟁점중 하나이다.운영체제에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것이메모리 보호의 주된 목적이다. 메모리 보호기법에도 여러 종류가 있는데, ASLR, NX, ASCII-Armor, Stack canary 등이 있습니다. 먼저 ASLR에 대해 정리하겠습니다. [ASLR] : Address Space Layout Randomization ASLR이란 위의 약자이고, 직역하면 주소 공..