$bash

'$bash'에 해당되는 글 180건

  1. System - Assembly Handray
  2. F.T.Z - level 1 ~ 9
  3. BOB 신청끝.
  4. sfp ??
  5. System - stack? gdb?
  6. System - 시스템해킹이란?
  7. 새상은 미쳐따.
  8. Webhacking.kr - level16
  9. Webhacking.kr - level15
  10. Webhacking.kr - level6

System - Assembly Handray

0x0300 : Study/0x0301 : System

Assembly Handray?

어셈블리 헨드레이란 어셈블리어를 c 언어로 복원시키는 것을 의미.


Assembly Instruction.

기본적인 어셈블리 명령어를 ArABoJa.


push : 스택에 특정 값을 넣고 ESP -4


pop : 특정 값에 ESP가 가리키는 값을 넣고 ESP + 4

 

nop : 아무것도 하지 않는다.


mov a, b : b를 A에 복사한다. ( a=b )


lea a, [b] : b의 주소에 있는 값을 a에 복사. ( a=*b )


cmp a, b : a와 b를 비교한다.


a > b    ZF = 0    CF = 1

a < b    ZF = 0    CF = 0

a == b  ZF = 1     CF = 0


add a, b : a와 b를 더해서 a에 결과를 넣는다. ( a+= b )


sub a, b : a와 b를 빼서 a에 결과를 넣음. ( a -= b )


imul a, b : a와 b를 곱해서 a에 넣음. ( a *= b )


xor a, b : a와 b를 xor 연산을 하여 a에 넣는다. ( a xor b )


inc a : a에 1 더함 ( a += 1 )


dec a : a에 1 뺌 ( a -= 1 )


je : 비교 값이 같은 경우 ( ZF = 1 )일때 점프한다.


jne : 비교 값이 다를 경우 ( ZF = 0 )일때 점프.


call : 해당 프로시저를 호출 (리턴값이 스택에 저장)


jmp : 해당 주소로 점프


// nop 명령어는 나중에 nop sled 기법으로 공부하면서 다시 언급 하자.


Handray!


// 시작하기전에 http://shayete.tistory.com/ 이사람 에서 공부한다. 그니깐 내가 끄적이는 것보다 저기를 추천함.

// 나는 저사람 블로그를 보고 공부한 내용을 서술하는 것 이다.. 문제되면 보호해서 암호화 할 계획.


ebp + 8 이상의 값이면 함수의 인자를 나타냄.

// int add (ebp + 8 , ebp + c , ebp + 10 )

// 3개의 함수의 인자가 나타남..


ebp - 4 , esp + 8 이상의 값은 지역변수이다.

숫자가 높을수록 가장 먼저 선언된 변수 !


mov x, y는 간단하게 x=y 이며 이게 lea x, [y] 와 같은 소리다.


인자 앞에 BYTE, WORD , DWORD 가 붙은 건 각각 1, 2, 4byte 임을 의미한다.


함수 프롤로그 밑에 sub x 가 있다는 것은 x 만큼 지역 변수가 선언해 있다는 것을 의미한다.


call x는 x라는 함수를 부른다는 뜻 인데 call 위에 보면 esp , esp + 4 , esp + 8 이 보인다. 이것은 각각 함수의 첫번째 인자 , 두번째 인자, 세번째 인자를 뜻한다.


for를 예시로 들어보자.

1    mov ebp - 0x8 , 0x0

2    cmp ebp - 0x8 , 0x9

3    add ebp - 0x8 , 0x1

2번줄 까지에 내용은 인자를 초기화 시키고 인자를 비교하는 것을 의미한다. 쭉 명령어를 실행시키고 3번째 부분에선 연산을 수행한다.

즉 ebp값이 0부터 8보다 같거나 9보다 클때 까지 1을 더한다는 의미가 된다...(맞나?)아몰랑 ^ㅡ^


// 이후 예시는 따로 참고 안함.

// 문제풀때 바로 걍 써먹었다.




" 출처 : http://shayete.tistory.com/ "

'0x0300 : Study > 0x0301 : System' 카테고리의 다른 글

생각난김에 쓴 심볼릭 링크  (0) 2016.07.19
System - Return To Library  (0) 2016.06.30
System - stack? gdb?  (0) 2016.06.12
System - 시스템해킹이란?  (0) 2016.06.12
Egg Shell  (0) 2016.06.07

F.T.Z - level 1 ~ 9

0x0400 : Wargame/0x0401 : F.T.Z

http://blog.naver.com/lolwinz


여기로 가시면 F.T.Z 9레벨 까지 풀이 있슴다.

옮기기 귀찮아서..테그로 남겨연

'0x0400 : Wargame > 0x0401 : F.T.Z' 카테고리의 다른 글

F.T.Z - 트레이닝 정리  (0) 2016.06.07

BOB 신청끝.

0x0000 : Me

붙게 해주세요 엉엉..

'0x0000 : Me' 카테고리의 다른 글

나우 유 씨미 2 리뷰??  (2) 2016.07.24
개인 중간 정검.  (0) 2016.07.19
narnia 근황.  (0) 2016.07.19
C 언어 프로그래밍 문제점  (0) 2016.06.14
새상은 미쳐따.  (0) 2016.06.09

sfp ??

0x0200 : 검색은 생활화


그러하다.


'0x0200 : 검색은 생활화' 카테고리의 다른 글

개굴개굴개굴개굴  (7) 2016.08.29
갓오핫 행님 퍄퍄  (0) 2016.08.05
오잉 hack-me 상태가?  (0) 2016.07.28
C언어 for 의문증?  (0) 2016.06.14
Wargame 정리 파일.  (2) 2016.06.07

System - stack? gdb?

0x0300 : Study/0x0301 : System

Stack Corruption?


요즘에 쓰이는 buffer over flow의 말 스텍에 할당량 공간에 버퍼의 메모리를 넘치게 해서 메모리를 오염시킨다는 의미.


Kernel - os의 시스템 코드가 로드되는 부분


-- Off limit --   사용자가 접근 못하도록 남겨둔 공간


Stack - 프로그램에서 사용되는 각종 환경변수, 파라미터, 리턴, 지역변수등 있는 공간


libc - 라이브러리가 이따..


Heap - 동적 할당되는 변수의 데이터가 위치하는 영역


BSS, Data - 프로그램에서 사용하는 전역변수, 정적변수 등 각종 변수들이 실제로 위치하는 메모리 영역.

                   변수가 초기화 = > Data             초기화 X = > BSS


Code - 실제 실행되는 기계어 명령어, 어셈블리 코드가 있는 곳, 프로그램 실행시 코드 영역에 있는 어세블리 코드가 해석되어 실행


(스택 쌓이는 구조는 안올렸는데...검색하세용 낄낄 ^ㅡ^)노양심


함수 프롤로그? 에필로그?


어셈블을 하면 보게되는 내용. 말그대로 시작부분과 끝부분을 지칭한다.


프롤로그에는

push EBP

mov EBP, ESP


이는 이전 함수의 Stack Frame의 시작점을 백업 하고 새로운 Stack Frame 을 생성하는 의미.


에필로그에는

mov ESP, EBP

pop EBP


Stack Pointer를 Caller Function 의 Stack Frame 시작 주소가 저장되어 있는 곳으로 변경하고 EBP를 원래대로 복구 하는것을 의미.


Stack Frame 시작점을 백업하여 함수가 끝나고 이전 함수로 넘어갈 때 base pointer 를 복원 시켜준다. 이때 push EBP 값이 sfp이다.

그리고 mov EBP, ESP 를 하여 이 함수가 끝나는 새로운 Stack Frame 을 생성한다.

mov ESP, EBP 를 해서 sfp가 저장되어 있는 곳으로 스택 포인터를 맞추고 그걸  POP EBP, sfp를 EBP에 빼내 이전 EBP를 다시 복구시켜준다. 

그리고 ReTurn Address . Stack Frame Pointer 바로 밑에 있는 이전 함수의 리턴 주소를 EIP에 POP해서 복구.


함수 호출규약


cdecl - 부모쪽 에서 스택 복구

stdcall - 자식쪽에서 스택 복구

fastcall - 레지스터를 통해 인자 전달.


이거에 대해서는 머릿속에서 정확히 정리를 못했다. 다시 공부해야될듯..


Registers!


EIP - Extend instruction pointer :: 다음에 실행될 주소를 담고 있다.

EBP - Extend base pointer :: 함수로 전달되는 파라미터 또는 지역변수를 나타낼때의 기준.

ESP - Extend stack pointer :: 스택의 끝부분.


eip를 컨트롤 한다는것이 eip는 다음에 실행될 주소가 담겨 있다. 때문에 우리가 원하는 주소를 eip에 넣으면 거기로 건너뛰어 원하는것을 실행 가능 !


EAX - 대부분의 산술 연산에 사용되며, 함수의 반환값이 들어기도함.

EBX - 주로 주소 지정을 확장하기 위해 index로 사용된다.

ECX - 루프의 반복 횟수, 좌우방향의 쉬프트 수를 기억.

EDX - 곱, 나눗 셈에서 EAX와 같이 사용되며 부호 확장 명령 등에 쓰인다.

ESI / EDI - cpu가 현재 코드 세그먼트에서 다음에 실행할 명령어의 오프셋을 저장하는 32bit 레지스터이다.


데이터, 인덱스 레지스터이다. 걍 변수랜다. 그래도! 기억은 하자


gdb!


명령어에 대해 서술할 것이다!


gdb -q [이름] : gdb 온 !


run (r) : 바이너리 실행


continue (c) : 다음 브레이크 포인트까지 실행


quit (q) : 종료


disas [함수이름] : 특정 함수의 어셈블리 코드 출력


info

- function : 함수의 정보 출력

- break : 브레이크 포인트의 정보 출력

     - del : 모든 브레이크 포인트 제거

     - del [숫자] : 특정 브레이크 포인트 제거

- reg : 레지스터의 정보 출력


break (b * [ㅡㅡ] )

 - function (main...add...기타등등 이름) : 함수에 브레이크 포인트를 건다. 함수 프롤로그 포함.

 - address : 특정 주소에 break를 건다.


stepi (si) : 코드 한줄 실행. - 세부


nexti (ni) : 코드 한줄 실행. - 세부 x


print [function] (p) : 해당 함수 주소 출력


p $reg : 해당 레지스터 값 출력


x/[범위][출력형식][범위단위][메모리주소 나 함수명]

- x/[범위]i [address] : 특정 주소를 범위 만큼 어셈블리로 출력

- x/[범위]s [address] : 특정 주소를 범위 만큼 문자로 출력

- x/[범위]wx [address] : 특정주소를 범위만큼 16진수 4바이트 단위로 출력


set {type}[address] 특정메모리에 값을 지정 = set{int}0x000000 = 100


set $[reg] : 특정 레지스터에 값을 지정 = set $eip = 0x41414141


finsh : 현재 함수를 수행하고 빠짐


u : 현재 루프를 탈출


disas [address] [address] : 주소 사이의 어셈블리 코드를 출력




" 출처 : http://shayete.tistory.com/ "

'0x0300 : Study > 0x0301 : System' 카테고리의 다른 글

System - Return To Library  (0) 2016.06.30
System - Assembly Handray  (0) 2016.06.12
System - 시스템해킹이란?  (0) 2016.06.12
Egg Shell  (0) 2016.06.07
bof 기초 입문용 서적 by 달고나  (0) 2016.06.07

System - 시스템해킹이란?

0x0300 : Study/0x0301 : System

풀이나 기술적으로 무엇인가 알려줄내용은 아니다. 그냥 내가 공부한 것에 대해 끄적일 것인데...

공부를 위해서 라면 읽어보는 것도 나쁘지 않을 것이다. 그럼 시작?


시스템 해킹?


내가 크게 알고있는 내용은 없다. 하지만 특정 권한이 존재하는 취약한 바이너리를 찾아 다양한 공격기법들을 사용해 메모리 보호기법을 통과하여 해커들이 원하는 결과를 도출하는 것 이라고 생각한다.


종류?


: BOF (buffer over flow)

 - Stack corruption

 - Heap corruption

: Format String Bug

: Integer Overflow

: Use - After -Free

: Type Confusion


(사실 아는건 bof끝 ㅎ)


VIM?


리눅스에서 사용되는 프로그래밍 모듈인데..본인은 걍 프로그램써서 코딩 따로함...끙

만약에 명령어가 궁금하다 ! (검색해 ㅡㅡ)


만약 필요로 하게 된다면 나중에 다시 서술해야겠다.




" 출처 : http://shayete.tistory.com/ "

'0x0300 : Study > 0x0301 : System' 카테고리의 다른 글

System - Return To Library  (0) 2016.06.30
System - Assembly Handray  (0) 2016.06.12
System - stack? gdb?  (0) 2016.06.12
Egg Shell  (0) 2016.06.07
bof 기초 입문용 서적 by 달고나  (0) 2016.06.07

새상은 미쳐따.

0x0000 : Me

해킹을 시작한지 3달? 2달? 그 정도 시간 간듯..

근데 아무리 봐도 나보다 나이많은 사람들 보다 나이어린 고등학생 애들 무섭따....블로그보면 사람인가 의심된다.

그보다 문제푼건 많은데 쓸 시간이 부족한듯.

bob 준비하랴 기말 준비하랴 포폴 준비하랴..몸이 부족하지만 오늘도 논다 !

무튼 열심히 풀이쓰고 공부도 하고 하루에 한문제씩은 풀고자니 뿌듯뿌듯.


문제 하루에 한문제라도 올리자.

(작심삼일)


'0x0000 : Me' 카테고리의 다른 글

나우 유 씨미 2 리뷰??  (2) 2016.07.24
개인 중간 정검.  (0) 2016.07.19
narnia 근황.  (0) 2016.07.19
C 언어 프로그래밍 문제점  (0) 2016.06.14
BOB 신청끝.  (0) 2016.06.12

Webhacking.kr - level16

0x0400 : Wargame/0x0408 : Webhacking.kr

Webhacking.kr 의 level16번 문제이다.


시작을 하면 다음과 같이 검은 화면에 색깔의 * 을 볼 수 있다.

그리고 타이핑을 하면 * 이 늘어나는데 무언가 타이핑을 하라는 의미인거 같다.


소스코드를 분석해보니 

function mv

에서 만약 cd 값이 124라면 무엇인가 따른 것을 출력 하라고 한다. 위를 보아하니 어떠한 특정 키를 눌러야 되는데

생각 나는 값이 아스키코드 떠오른다. 124를 찾아보니  "|"파이프 키 이다. 


파이프 키를 입력하니 password 가 출력 되었다.

'0x0400 : Wargame > 0x0408 : Webhacking.kr' 카테고리의 다른 글

Webhacking.kr - level15  (0) 2016.06.09
Webhacking.kr - level6  (0) 2016.06.09
Webhacking.kr - level14  (0) 2016.06.07
Webhacking.kr - level4  (0) 2016.06.07
Webhacking.kr - level1  (0) 2016.06.07

Webhacking.kr - level15

0x0400 : Wargame/0x0408 : Webhacking.kr

Webhacking.kr 의 leve15번 문제이다.


클릭과 동시에 엑세스가 거부된다는 문구가 뜬다.


확인을 누르니 패스워드가 순간적으로 잠깐 보이는 것을 확인 할 수 있다.

해결잼


'0x0400 : Wargame > 0x0408 : Webhacking.kr' 카테고리의 다른 글

Webhacking.kr - level16  (0) 2016.06.09
Webhacking.kr - level6  (0) 2016.06.09
Webhacking.kr - level14  (0) 2016.06.07
Webhacking.kr - level4  (0) 2016.06.07
Webhacking.kr - level1  (0) 2016.06.07

Webhacking.kr - level6

0x0400 : Wargame/0x0408 : Webhacking.kr


Webhacking.kr의 6번 문제이다. 내용을 확인해보자.


처음 화면을 보니 hint 로 base64라고 주어진다. 아무래도 어떤 값을 base64로 변환 해야되는거 같다.

id와 pw값도 확인 할 수 있다. 그럼 index.phps로 이동해보자.


위와 같은 코딩내용을 볼 수 있는데.

for 구문을 보아하니 base64 디코딩을 20번 하라고 한다. 하지만 어떠한 값을 해야되는지는 알 수가 없다.


그런데 아래를 보니 if구문을 확인하면 디코딩된 id와 pw값이 admin이여야 된다고 한다.


admin을 20번 base64로 변환해 넣으면 될꺼 같다.


쿠키 에디트를 이용하여 id와 pw 탭을 생성하여 값을 넣으면 해결이 된다.

'0x0400 : Wargame > 0x0408 : Webhacking.kr' 카테고리의 다른 글

Webhacking.kr - level16  (0) 2016.06.09
Webhacking.kr - level15  (0) 2016.06.09
Webhacking.kr - level14  (0) 2016.06.07
Webhacking.kr - level4  (0) 2016.06.07
Webhacking.kr - level1  (0) 2016.06.07