일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- LOB
- BOJ
- vim-go
- Nebula
- JUCE라이브러리
- 운영체제
- C언어
- tour of go
- JUCE library
- OS
- C++ gui
- 리듬게임
- JUCE
- gui
- 백준
- JUCE 튜토리얼
- 코딩
- a tour of go
- Docker
- 프로그래밍
- 공룡책
- c++ heap
- C++ library
- C++
- 알고리즘
- C++ gui 라이브러리
- go
- 연결리스트
- 자료구조
- go channel
- Today
- Total
목록CafeM0ca (265)
CafeM0ca
*생활코딩에서 배운내용을 모카에게 최적화해서 작성한 것임을 밝힌다.(어제 카페모카 한 잔 사마셨는데 카페주인이 한 잔 더 주면서 '뭐가 더 입맛에 맞나요?' 라며 총 두 잔을 한 잔가격에 마셨는데 맛있었다.. 물론 카페모카==시럽1~2,초코파우더많이 ㅎㅎ) 자료형 자바스크립트에서는 자료형이 3가지로 나뉜다. (첫글자가 대문자이다.) 1. Boolean(불린) : 참과 거짓을 뜻하는 true와 false. 2가지 자료형2. Number(넘버) : 수를 다루는 자료형3. String(스트링) : 문자,문자열을 다루는 자료형 변수 변수는 말 그대로 변할수 있는 수. 프로그래머가 무언의 값을 저장해서 사용하기 위한것이다.변수의 선언은 아래와 같이 한다. var 변수이름; 선언과 동시에 초기화도 된다. var a..
모카는 개인적으로 '자바'가 들어간 단어나 웹,네트워크를 싫어하는데 팀프로젝트로 프론트엔드를 맡게되었고 죽어도 하기싫은 자바스크립트를 하게 되었다. 공부에 앞서서 자바스크립트를 검색해보니 원래 이름은 모카(Mocha)였던 것이다!갑자기 자스가 맘에 들어서 카테고리에 웹-자바스크립트를 추가하게 된 것이다. 공부는 어디서 하는가?:https://opentutorials.org/course/1 생활코딩이라는 사이트가 있는데 무료강의가 있다. 모카는 강의를 볼정도로 시간이 없으니 참고만하고 웹페이지에 작성되있는 문법만 익히는게 목적이다. (살면서 단 한번도 웹을 접해보지 않음. HTML문법을 1도 모른다.) 윈도우랑 맥에대한 실행환경이 사이트에 자세히 나와있지만 리눅스에 대한 설명은 없다.(모카는 우분투를 사용..
CTF를 한번 참가했었는데 착하게 LOB처럼 소스코드를 주지는 않는다.덕분에 처음 본 문제가 python으로 코딩한 문제로 알고있다.죽어라 gdb로 disas main했지만 안나오는게 당연했었다.(main함수없고 init함수가 있더라) 이야기가 삼천포로 빠졌는데 어쨌든 실행파일 바이너리만 달랑주기 때문에 어셈블리 명렁어를 통해 프로그램의 실행 로직을 잘 파악해야 한다. push - 스택에 메모리를 집어넣는다. 32비트면 4바이트, 64비트면 8바이트pop - 스택 최상단에서 메모리를 뺀다. (pop eax - 최상단에서 뺀 메모리값을 eax에 저장)mov - 주소를 복사한다. (mov dest scr - dest에 scr을 복사) lea - 주소값을 복사한다.(lea 레지스터 주소 - 레지스터에 주소값을..
입장 ID:vampire입장 PW:music world코드를 확인해보니 버퍼와 argv를 싹다 초기화 한다. 복사본을 만들자. 스택구조는 다음과 같다.buffer 40 | SFP 4 | RET 4 gdb로 열고 main+368부분에 브레이크 포인트를 잡자.공격 스크립트는 `python -c 'print "A"*44+"\xaa\xbb\xcc\xbf"'`이며스택을 확인해보자. 스택 최하단에 실행파일 이름공간이 보인다! 이 부분을 사용하자. 심볼릭 링크를 걸어주자. 여기서 쉘코드 뒤에 약간의 높을 넣어줘야 원활하게 실행된다.ln -s noteleks `python -c 'print "\x90"*100+"심볼릭 링크 쉘코드"+"\x90"*50'`사진상에는 skeleton으로 심볼릭 링크를 걸었지만 복사본으로 걸..
입장 ID:troll입장 PW:aspirin 소스코드가 많이 짧아졌다. argv[1][46]이 \xff면 종료된다. 스택이 쌓이게 되면 \xff에서 \x00까지 낮은주소로 향하게 된다. 스택 구조는 아래와 같다.buffer 40 | SFP 4 | RET 4 r `python -c 'print "A"*44+"\xaa\xbb\xcc\xbf"+"\x90"*130014'`를 해준 상태에서 esp를 확인해보니 리턴주소로 사용할 NOP의 주소가 \xff가 아니게 된다. payload./vampire `python -c 'print "A"*44+"&(argv[1][46]이 \xff가아닌 NOP)+"\x90"*130020"+"쉘코드"'` 다음 ID:vampire다음 PW:music world
입장 ID:orge입장 PW:timewalker 레벨이 올라갈때 마다 무언가 하나씩 추가되고 있다.인자는 2개이어야하며 환경변수 사용불가,argv[1][47]은 \xbf, argv[1]의 길이는 48이하, 버퍼 0으로 초기화, argv[1]초기화 된다. 인자가 2개이고 argv[1]과 버퍼가 초기화 되므로 argv[0]을 사용하자. 복사본을 만들고 심볼릭 링크를 걸어주자. main+317부분에 브레이크 포인트를 잡자.스택 구조는 아래와 같다.i 4 | buffer 40 | SFP 4 | RET 4 argv[0]의 주소를 0xbffff944에서 한번 더 들어가서 x/s 0xbffffa3f로 보면 argv[0]의 주소가 나온다. 주소를 구했으니 페이로드를 작성하자.복사본의 심볼릭링킹된 파일을 삭제하고 원본파..
입장 ID:darkelf입장 PW:kernel crashed wolfman.c에서 argv[0]의 길이가 77인지 확인하네요.파일 이름이 argv[0]입니다. 즉 파일이름의 길이를 심볼릭 링크를 통해서 77자를 맞춰주면 되는데요. 여기서 중요한건 ./home이라는 파일이 있으면 4글자가 아니라 ./도 포함되어 6글자가 됩니다. 심볼릭 링크는 ln -s 링크될파일 파일이름 이렇게 사용합니다. 스택 구조는 아래와 같습니다.buffer 40 | SFP 4 | RET 4 argv[2]의 주소를 구하고 리턴주소에 사용할 NOP 주소를 구합시다. 원본파일에 심볼릭 링크를 argv[0]의 길이가 77이 되도록 걸어주고 공격합니다.payload./`python -c 'print "A"*75'` `python -c 'p..
입장 ID:orc입장 PW:love eyuna 인자가 2개 이하인지 확인, 환경변수 초기화, argv[1][47]이 \xbf인지 확인, argv[1]의 길이가 48보다 큰지 확인, 버퍼 40바이트 0으로 초기화 하고 있다. gdb에서 main+278에 브레이크 포인트를 잡아주자. 스택구조는 아래와 같다.buffer 40 | SFP 4 | RET 4 여태까지 argv[1]에 nop을 넣고 쉘코드를 실행시켰는데 argv[1]이나 버퍼를 사용하지 못하니 argv[2]에다 nop을 올려놓겠다.argv[2]에 nop을 전달하는 방법은 아래와 같다.r `python -c 'print "A"*44+"\xaa\xbb\xcc\xbf"'` `python -c 'print "\x90"*200'` argv[2]의 주소를 찾아..
입장 ID: orc입장 PW: cantata 소스코드를 확인해보니 환경변수,버퍼를 초기화 하고 있다. argv[1][47]은 \xbf인지 확인도 한다. 복사본을 만들고 gdb로 확인해보자. main+230에 브레이크 포인트를 잡아준다. 사진을 보면 0xbffffa1c이전 줄에 AAAA 4바이트가 하나 있고 나머지는 다 0으로 초기화 되있는데 이 부분이 buffer를 0으로 초기화 한 부분이다. 스택 구조를 살펴보자. 스택구조는 아래와 같다buffer 40(초기화됨) | SFP 4 | RET 4 공격 스크립트는 아래와 같다."A"*44+"\xaa\xbb\xcc\xbf"+"nop"*200 어떻게 보면 이전 단계와 별 다를게 없다. 버퍼를 초기화 했냐 안했냐의 차이일 뿐이다.스택 상단의 argv[1]이 보인다..
입장 ID: goblin입장 PW: hackers proof 코드를 보니 cobolt에서 환경변수를 사용하여 공격에 성공했었는데 이번에는 환경변수를 0으로 초기화 해버린다.덤으로 argv[1][47]은 \xbf이여만 한다. 복사본을 하나 만들고 gdb로 확인해보자. 스택구조buffer 40 | SFP 4 | RET 4로 구성되었다. 공격은 gate에서 했던 방법으로 공격하겠다. 여기서 리턴 주소를 찾기위해 \xaa\xbb\xcc\xdd를 했었지만 이번에는 argv[1][47]에 \xbf가 있는지 검사하기 때문에 \xaa\xbb\xcc\xbf로 인자를 전달하겠다.그리고 nop 200개정도 넣어준다.스택에서 인자로 전달해준 nop이 있는 주소를 아무거나 사용하자 payload./orc `python -c '..