일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김골라
- GeoJSON object too complex/large
- netlify variables
- 어셈블리어
- S3
- node
- AWS CodePipeline
- expo
- Error:error:0308010C:digital envelope routines::unsupported
- Unable to find the global bin directory
- react
- AWS CodeBuild
- 설치완료안됨
- C언어
- CSS
- SASS
- ERR_PNPM_NO_GLOBAL_BIN_DIR
- can't getting credentials
- 이미지 맵
- Sequelize Error: Dialect needs to be explicitly supplied as of v4.0.0
- aws ec2
- ogr2ogr
- NODE_VERSION
- 반응형 페이지 좌표 변환
- credential error
- nodejs
- rwdImageMaps
- AWS
- 이미지 좌표 추출
- EC2
- Today
- Total
목록전체 글 (251)
ImFe's study

Bandit이란 OverTheWire에서 운영중인 초보자용 워게임입니다. SSH를 이용해서 접속하라네요. bandit.labs.overthewire.org를 2220포트로 접속하면 되겠습니다. 유저네임은 bandit0이고 암호는 bandit0입니다. 로그인하고 Level1페이지로 가서 어떻게 Level1을 깨는지 봅시다. 그렇구나 readme를 실행하니까 위와 같이 뜨네요. 디코딩해야할지 한참 고민했는데 그냥 이게 다음 레벨의 비밀번호라네요. readme에 있는 정보가 다음 레벨의 비밀번호라 합니다. 메모장에 잘 적어둡시다. boJ9jbbUNNfktd78OOpsqOltutMc3MY1

풀이 -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)권한밖에 없네요. 그리고 실행해보면 무슨 문자열이 뜨는데 한글패치를 안해서 문자열이 깨지네요.. 아마 패스워드를 입력하라는 글귀일거같습니다. 한글이 깨지니..

#include #include using namespace std; int main() { int x; int y; int z; cout

로그인을하고 ls -l을 입력해줍시다 입력을 하고 나면 attackme와 hint파일이 보이는데 일단 cat hint를 통해 hint파일을 열었습니다. strcpy함수는 복사하는 문자열의 길이를 체크하지 않기때문에 길이가 256이 넘어가게되면 스택의 다른 영역들을 침범하게됩니다. 이렇게 되면 입력 문자열을 통해 RET값을 변경할 수 있습니다. RET는 스택 가장 아래쪽에 쌓여서 특정 함수가 끝난 후에 돌아갈 위치가 저장됩니다. 이러한 성질을 통해 RET를 변조하여 프로그램으로 하여금 공격자가 원하는 작동을 할 수 있게합니다. 코드에 setreuid가 있으니 프로그램이 실행되는 동안에 my-pass나 /bin/bash를 실행하면 될거같습니다. 쉘 코드는 /bin/bash나 /bin/sh를 실행시켜주는 코드..

스택 프로텍터들을 사용하지 않는 옵션들입니다. 프로그램 동작에 따른 스택의 변화는 대강 버퍼 변수c EBP(RBP) RET 이렇게 main함수에서 sum()을 호출한 이후 버퍼 RBP RET 변수 = 2 변수 = 1 버퍼 변수c EBP RET 버퍼 위에 스택이 쌓이게됩니다. 매개변수들은 RET 아래에 들어가게됩니다. 또한 sum을 다 실행하면 RET를 통해 변수1부터 최상단 버퍼가 사라집니다(POP) 더 자세히 알아보면 main 함수가 불러와지자 ret가 일단 자리를 잡습니다. main: push %rbp를 통해 rbp를 지정합니다. mov %rsp, %rbp // %rsp=%rbp sub $16, %rsp //rsp에서 16만큼을 뺍니다. = 16만큼 확보후 코드를 작성할 계호기 mov $2 %esi ..
MOV) 전에 포스팅 한 글에도 나와있지만 mov a, b 는 b를 a에 넣는것을 의미합니다 mov 목적지, 값 으로 생각하면 되겠네요 EX) AX를 56h와 같게 하려면 MOV AX,56h //AX의 값이 56h가 된다. 값으로 다른 레지스터를 사용할수도있습니다. MOV AX,BX //AX의 값이 BX로 바뀐다. BX의 값이 nn이라면 AX또한 nn이 됩니다. XCHG) XCHG연산자는 두 레지스터를 바꾸는 역할을 합니다. (exchange) EX) MOV DX,56h MOV AX,3Fh XCHG DX,AX // 값을 교환함으로써 DX는 3Fh, AX는 56h가 됩니다. +8비트 레지스터와 16비트가 교환되지 않도록 해야합니다. 해당 코드는 의미가 없습니다. INC(increase)와DEC(decrea..