일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이미지 맵
- EC2
- Unable to find the global bin directory
- C언어
- 어셈블리어
- Sequelize Error: Dialect needs to be explicitly supplied as of v4.0.0
- expo
- GeoJSON object too complex/large
- react
- ERR_PNPM_NO_GLOBAL_BIN_DIR
- 설치완료안됨
- nodejs
- credential error
- NODE_VERSION
- 김골라
- aws ec2
- SASS
- AWS CodeBuild
- 이미지 좌표 추출
- CSS
- AWS CodePipeline
- ogr2ogr
- rwdImageMaps
- can't getting credentials
- S3
- Error:error:0308010C:digital envelope routines::unsupported
- AWS
- node
- 반응형 페이지 좌표 변환
- netlify variables
- Today
- Total
목록FTZ (10)
ImFe's study
풀이 -1이나 풀이-2(NOPsled)는 ASLR 메모리보호기법때문에 어려움이 있었습니다. 1같은경우는 애초에 근본부터 글러먹은 풀이였고 놉슬레드같은경우에도 정확한 값을 이용한다기보다는 공격기법의 특성상 좀 애매한면이 있었다고 생각합니다. 이러한 문제는 환경변수로 해결 할 수 있습니다. 환경변수는 주소가 고정되며 보통은 경로설정같은 값을 저장하는데에 쓰이지만 공격 코드를 저장할수도 있습니다. 환경변수는 OS가 필요한 정보를 메모리에 등록해 놓고 필요할 때마다 참조하는 영역을 의미합니다. 일반 사용자도 필요한 것이 있다면 여기에 등록해서 사용이 가능합니다. 그래서 쉘코드를 환경변수에 등록하고, RET위치에 해당 환경변수가 위치한 주소를 적으면 됩니다. 필요한 정보들) 1.환경변수의 위치 2.RET의 위치 ..
열심히 FTZ level11을 풀기위해 노력했지만 생각한 방식으로는 안된다는걸 알았습니다. (보안기법이나 메모리가 계속 바뀐다던가) 또한 strcpy를 이용하여 푸는 풀이보다는 argv[1]를 이용한 풀이가 압도적으로 많았습니다. 전에 했던 실패한 풀이는 그냥 gdb를 이용해 브레이크 포인트를 걸거나, 버퍼에 더미값을 넣어 파악하는것을 돕는다던지 그러한 방식들을 시도해본것에 의의를 두고 다른 방식으로 풀어보려합니다. ============================================================================ NOPsled의 Nop은 No operation으로써 무작동을 의미합니다. Sled는 썰매라는 뜻입니다. CPU는 Nop이라는 데이터를 만나게 되면 할 일..
int auth(4바이트) 를 할당. char passwd[20] (1x20, 20바이트) 를 할당 strcmp는 비교되는 두 문자열이 같다면 0을 반환하는 함수입니다. 입력한 패스워드가 secretkey면 0을 반환하고 auth는 1이 되고 0값만 아니면 모두 참값으로 생각하는 if의 성질을 이용해 인증에 통과했다는 문구를 띄우네요. auth만 1이 되어도 인증에 통과했다는 문구를 띄울 수 있을거같습니다. 이게 진짜 문제인데요. ls -al로 확인해보니까 real_quiz파일의 권한이 rwxrwx--x니까 저희는 --x에 해당되고 실행(execute)권한밖에 없네요. 그리고 실행해보면 무슨 문자열이 뜨는데 한글패치를 안해서 문자열이 깨지네요.. 아마 패스워드를 입력하라는 글귀일거같습니다. 한글이 깨지니..
로그인을하고 ls -l을 입력해줍시다 입력을 하고 나면 attackme와 hint파일이 보이는데 일단 cat hint를 통해 hint파일을 열었습니다. strcpy함수는 복사하는 문자열의 길이를 체크하지 않기때문에 길이가 256이 넘어가게되면 스택의 다른 영역들을 침범하게됩니다. 이렇게 되면 입력 문자열을 통해 RET값을 변경할 수 있습니다. RET는 스택 가장 아래쪽에 쌓여서 특정 함수가 끝난 후에 돌아갈 위치가 저장됩니다. 이러한 성질을 통해 RET를 변조하여 프로그램으로 하여금 공격자가 원하는 작동을 할 수 있게합니다. 코드에 setreuid가 있으니 프로그램이 실행되는 동안에 my-pass나 /bin/bash를 실행하면 될거같습니다. 쉘 코드는 /bin/bash나 /bin/sh를 실행시켜주는 코드..
레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다. CPU와 직접 연결되어 있으므로 연산속도가 메모리보다 훨씬 빠르다. 우리가 사용하는 CPU는 특별한 경우가 아닌경우 32bit와 64bit로 나뉘는데 이 비트 수는 명령을 한번에 처리할 수 있는 레지스터의 비트 수를 의미한다. 32bit CPU의 경우 하나의 레지스터는 32bit만큼을 저장 할 수 있다. 16비트 레지스터에서 e를 붙이면 32비트 레지스터명과 동일해지는데 이는 '확장되었다'를 의미하는 Extended이다. 범용 레지스터: (32bit 레지스터 기준) EAX(Extended Accumulator Register) :함수 실행후의 결과가 담긴다. 산술연산 명령에서 상수/변수 값을 저장하거나 함수의 리턴값이..
본 글은 FTZ를 풀기위해 필요한 어셈블리어의 기초를 다루고있습니다. 보완할 부분(내용추가, 맞춤법, 모호한 표현 등)이 있으면 댓글로 알려주시면 감사하겠습니다. n진법이란? - n개로 나타낼 수 있는 수 체계 2진법은 2개의 수, 0과 1로 수를 표현합니다. 8진법은 8개의 수, 0,1,2,3,4,5,6,7로 수를 표현합니다. 10진법은 10개의 수, 0,1,2,3,4,5,6,7,8,9로 수를 표현합니다. 16진법은 10개의 수와 알파벳 6개, 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F로 수를 표현합니다. 2진법(Binary) 2진법 으로 표현된 1011(2) 로 설명하면 맨 아래 자릿수인 1은 2의0제곱이 오는 자리입니다. 자릿수가 위로 올라갈수록 2^1, 2^2, 2^3 ...이 됩니..
로그인 후 ls명령어를 사용하면 hint파일이 존재하는것을 알 수 있습니다. 이를 열면 위와같은 코드가 보이는데요. 일단 코드를 보면 buf2와 buf에 각각 10byte씩 할당되어있는 것을 볼 수 있습니다. 그리고 printf문에 It can be overflow라고 버퍼 오버플로우 공격이 가능함이 암시되어있네요. 그리고 fgets를 통해 buf에 40만큼을 입력받습니다. 여기서 버퍼 오버플로우 취약점이 발생하겠네요. buf2가 먼저 선언되고 그다음 buf가 선언되었으므로 입력값이 buf를 넘기면 buf2까지 도달할 거 같습니다. 이런 방식으로 buf2의 값을 go로 바꿔주면 level10으로 올라갈 수 있는 쉘을 실행해주는거 같습니다. 권한이 없어서 tmp에서 작업하는게 좋겠네요. vi편집기로 코드를..
Trainer6 /etc/passwd : 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일 cat 파일이름 : 파일의 내용을 출력 ex) root:x:0:0:Admin:/root:/bin/bash :로 필드를 구분하며 왼쪽부터 필드1 1. 로그인 할 때 사용된 사용자 아이디 2. 패스워드(/etc/shadow 파일에 암호화되어 있음) 3. 사용자 계정 uid 4. 사용자 계정 gid 5. 사용자 계정 이름 6. 로그인 성공 시 기본으로 위치하게 되는 사용자 계정 홈 디렉토리 7. 사용자 계정 로그인 쉘(로그인 했을때 쉘이 실행됨) Trainer7의 비밀번호는 to the top Trainer7 tar : 파일 아카이브, 압축이 되지는 않는다. 아카이브란 파일을 묶어 하나로 만든 것 tar cv..