level17을 풀어보장. 이제 3문제만 더 풀면 ftz마스터당! 이거 다하면 LOB해야지! hint를 보자. 16번과 비슷하지만 setreuidrk main함수 내에 있다.처음에는 그냥 main문 실행하면 동기식으로 setreuid실행하는거 아닌가? 생각했다.근데 쉘을 실행시키는 함수가 없으니 권한만 상승되는 문제가 있다. 그럼 이 문제는 직접 쉘을 상승시켜줘야 한다.환경변수를 이용해보자. 먼저 gdb를 보자. 똑같이 56byte만큼 스택을 확장한 후, ebp-16에 0x8048490을 넣어줬다.0x8048490이 printit이라 생각하고 확인해보자. 맞다. 다시 main문에서 eax에 ebp-56의 값을 복사해주고,fgets를 호출했다. 별 다를 것 없이 buf시작부분에서 call함수까지의 거리가 ..
level 16을 풀어보장. 힌트를 먼저 보면 함수가 3개나 있다. 1.권한을 상승시켜주는 shell함수2. hello there을 출력하는 printit함수3. main문.main문은 int형 crap변수가 있고, call변수를 포인터 함수로 선언해 printit함수를 담았다.call함수를 실행하면 printit함수가 호출된다.buf 배열20byte를 선언하고 fgets함수를 사용해 48byte까지 입력을 받고,마지막에 call함수를 호출한다. 문제는 간단하다. printit대신 shell함수를 호출하면 권한이 상승된다. 그럼 call함수의 위치를 알아내고 shell의 위치를 알아내 call위치에 넣어주면 되겠다. main문을 살펴보자. main+3에서 0x38만큼,56byte만큼 스택을 확장하고,ma..
level 15를 풀어보장. 힌트를 보면 14번과 비슷하지만 check변수를 포인터로 선언했다. 일단 gdb를 보자. main+3과 main+6에서 0x38과0x4만큼 스택을 확장했다. 총 60만큼이다.main+21에 fgets가 있고 main+17에서 eax에 ebp-56의 값을 복사했다. 그럼 ebp-56에 buf가 있다.main+29에서 ebp-16의 값을 eax에 복사했고, main+32에서 eax의 값과 0xdeadbeef의 값을 비교한다. 그럼 ebp-16에 check가 위치해 있겠다. 그리고 main+38에서 jne 명령어가 있는데 이 명령어는 cmp결과 값이 거짓이면 해당 명령어를 실행한다. 즉 eax와 0xdeadbeef를 비교했을 때 거짓이면 main+77로 이동한다는 것이다. 그럼 c..
level14를 풀어보장. 포너블도 진입장벽이 높지만 장벽이 허물어졌을 때 쾌감은 역시 너무 좋당.아직 ftz정도의 레벨 밖에 못풀었지만 그래도 내 힘으로 풀었다. 힌트를 보장. 변수가 3개 있다. crap, check, buf.int형은 4byte니까 4+4+20 총 28byte만큼 필요하겠지?그리고 fgets로 45길이만큼 입력받아 buf에 저장한다.이전에 쓰던 gets는 길이를 체크하지 않았지만 fgets는 받는 길이를 체크한다.미리 말해보자면 fgets때문에 ret조작은 불가능하다. 하지만 if 조건에서 check값이 0xdeadbeef면 권한상승이 되니 ret조작은 필요없다. main+3에서 0x38만큼, 56만큼 스택이 확장되었다. 다음으로 main+6에서 4만큼 또 확장되어서 60 byte만..
level12를 풀어보장.처음이 어렵지 이해하면 level12는 별루 어렵지 않다. 문제를 보자. 똑같이 attackme와 hint가 있다. hint먼저 보장. 11번이랑 비슷한데 11번은 입력을 받고 실행했다면 12번은 실행 후에 입력을 받는다.이 점을 잘 생각해야 한다. main문을 보장. main+3,main+9에서 똑같이 0x108과0x8만큼 sub했다.스택이 264만큼 확장되었다. main+49에서 lea 0xfffffef8(%ebp),%eax 명령어가 있다.이건 ebp-264의 값을 eax에 넣었다는 의미이다.main+55에서 push eax한 걸 보니 ebp-264가 str배열의 위치인 것 같다. 사실 11번 문제와 풀이법은 똑같다.256만큼 str배열이고 8만큼 dummy,4만큼 sfp 총..
포너블을 시작했다.진입장벽이 너무 높다...어려워...달고나는 한 4번정도 읽어본 것 같다. 읽을 때마다 새롭게 알아간다. FTZ로 시작한 이유는 난이도도 있지만 스택에 대해서, 어셈블리어에 대해서 몸으로 배우기 적절하다 생각했기 때문이다. 근데 너무 어렵다... 후... level11에 접속한 후 목록을 보면 attackme가 있다. 이걸 공격하라는 것 같다.근데 소유자가 level12이다. 문제푸는데 뭔가 불편할 것 같으니 tmp파일에 넣어주자. level11의 소유가 되었다. 일단 힌트를 볼까. str변수에 256바이트만큼 공간이 할당되었고, setreuid가 있다. 그리고 strcpy함수로 입력받은 문자열을 str에 전달한다. 여기서 문제점이 strcpy함수는 입력받은 문자열의 길이를 체크하지 않..
0x01. 가장 기본적으로 쉘을 띄우는 코드\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80bytes : 25미포함 : setreuid(), exit() 0x02. 쉘을 종료할 때 exit(0)으로 정상종료까지 시켜주는 코드\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80bytes : 31미포함 : setreuid() 0x03. setreuid(geteuid(), getreuid()), exit(0) 까지..
RTL(Return To Libc)란 무엇 일까? 1.개념RTL기법은 리눅스의 메모리 보호 기법 중 하나인 NX bit(Non eXecutable bit)를 우회하기 위해 사용되는 공격 기법이다. NX bit는 stack segment에서 execute(실행)권한을 제한함으로써,stack에 쉘 코드를 저장하고 이를 실행하여 악용되는 방법을 막는 보호 기법이다.(non-executable stack 보호 기법이라고도 한다.) 이 기법은 메모리에 미리 적재되어 있는 공유 라이브러리를 이용해 바이너리에 원하는 함수가 없어도공유 라이브러리에서 원하는 함수를 가져와 사용할 수 있다. 2.이해하기예를 보며 설명을 보자.system()함수를 실행해서 살펴보자.system()함수는 단순히 명령어를 호출만 하는 함수로서..
레이스 컨디션(Race Condition) 기법 프로그램이 임시파일을 만들 때 이미 같은 이름의 파일이 있으면 존재하는 임시파일을 지운 후 임시파일을 만들도록 프로그램을 만들었다. 그러나 파일을 검사하고 삭제하고 다시 임시파일을 만드는 과정에서도 간격이 존재한다. 프로그램을 실행하는 과정이다. 1. 프로그램 실행 2. 같은 이름의 파일 존재하는지 확인 3. 있으면 삭제, 없으면 건너뜀 4. 임시파일 생성 3번과 4번 사이의 간격에서 심볼릭링크 파일을 만든다. 딱 시간에 잡는 것은 불가능하므로 root 권한의 setuid가 걸린 프로그램을 여러 번 반복 실행하도록 하는 프로그램과 심볼릭링크를 여러 번 하는 프로그램 두 개를 만든다. 이 두 프로그램을 동시에 실행하면 실행되는 시간의 차이가 있으므로 3번과 ..
심볼릭링크 파일을 가리키고 있는 파일을 생성하는 것 바로가기와 비슷함 하드링크 한개의 파일을 가리키는 이름을 하나더 만드는 것 원본을 수정하면 복사본의 내용도 수정됨 둘중 하나를 지워도 삭제안됨 $ln 원본파일 하드링크파일 심볼릭링크를 이용한 해킹 일반사용자가 root몰래 /etc/passwd파일의 심볼릭링크를 만들어 놓았다고 하자 그런데 root가 심볼릭링크 파일의 내용을 수정한다고 하면 root는 /etc/passwd에 수정을 하는것이고 shadow파일은 수정이 된다. root권한의 setuid가 걸린 good이라는 프로그램이 있다고 하자. 이 프로그램은 실행한 후에 /tmp 디렉토리안에 bye라는 임시파일을 만든다. good을 실행하면 /tmp/bye라는 임시파일이 생긴다. 일반사용자가 /tmp/b..
- Total
- Today
- Yesterday
- 차량 네트워크
- 논문 잘 쓰는법
- many-to-one
- SVM
- Ethernet
- CAN-FD
- AE
- one-to-many
- problem statement
- AVTP
- many-to-many
- Python
- 딥러닝
- 회귀
- porks
- automotive ethernet
- PCA
- HTML
- 이상탐지
- 크로스 엔트로피
- 차량용 이더넷
- cuckoo
- 단순선형회귀
- automotive
- 로지스틱회귀
- 케라스
- SOME/IP
- AVB
- 머신러닝
- json2html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |