본문으로 바로가기

marco

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
관리자
  • 블로그 이미지
    MarcoKhan

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

해커스쿨 FTZ level14

level14 --- what that nigga want? 우선 level14의 디렉터리를 확인한다. attackme라는 의심스러운 파일이 존재한다. attackme는 level15의 권한을 가지고 있고, setuid가 걸려있는 파일이다. 우리가 공격할 대상이 attackme일 가능성이 크다고 생각하고 hint를 보자. hint를 보니 우리가 쉘 코드를 삽입하여 쉘을 띄우는 것이 아니다.check == 0xdeadbeef가 되면 프로그램이 자체적으로 쉘을 띄워준다. int check; 변수는 초기화 되지 않았지만 우리가 버퍼 오버플로우를 통해서 0xdeadbeef로 write하면 된다. 지금까지 공부한 것을 바탕으로 gdb를 통해 attackme를 분석해보자. 우리는 int crap, int check..

Wargame/FTZ 2018. 8. 2. 11:56

해커스쿨 FTZ level13 (스택 가드)

level13 --- have no clue 우선 level13의 디렉터리를 확인한다. attackeme라는 의심스러운 파일이 존재한다. attackme는 level14의 권한을 가지고 있고, setuid가 걸려있는 파일이다. 우리가 공결할 대상이 attackme일 가능성이 크다고 생각하고 hint를 보자. level12의 버퍼 오버플로우의 소스와 매우 비슷하다.하지만 배열을 선언하기 전에 long i=0x1234567 이라는 지역변수가 추가로 선언 되어있다. long i=0x1234567은 무엇을 뜻하길래 추가로 선언되어 있을까?버퍼 오버플로우 취약점이 발생한 이후 많을 프로그래머들이 이를 해결하기 위해 많은 방법을 고안하였다.여기서 착안한 방법이 스택 가드 기법이다. 스택 가드 기법은 덮어씌여질 임의..

Wargame/FTZ 2018. 8. 2. 10:22

해커스쿨 FTZ level12 (버퍼 오버 플로우)

level12 --- it is like this 우선 level12의 디렉터리를 확인한다. attackme라는 의심스러운 파일이 존재한다. attackme는 level13의 권한을 가지고 있고, setuid가 걸려있는 파일이다. 우리가 공격할 대상이 attackme라는 생각을 가지고 hint를 보자. 배열이 선언되어있고, gets() 함수를 통해서 사용자로부터 입력된 문자열을 str 배열에 저장한다.gets() 함수는 사용자로부터 받은 문자열의 길이를 측정하지 않는 함수이다.만일 사용자가 300 byte 길이의 문자열을 입력하면 어떻게 될까? gets() 함수는 문자열의 길이를 측정하지 않기 때문에 배열의 범위를 넘어 다른 메모리를 침범한다.이러한 상황에서 발생할 수 있는 취약점은 버퍼 오버플로우 취약..

Wargame/FTZ 2018. 8. 1. 23:08

해커스쿨 FTZ level11 (포맷 스트링 버그)

level11 --- what!@#$? 우선 level11의 디렉터리를 확인한다. attackme라는 의심스러운 파일이 존재한다 attackme는 level12의 권한을 가지고 있고, setuid가 걸려있는 파일이다. 공격할 대상을 attackme로 가정하고 hint를 보자. hint를 보면 포맷스트링 취약점과 버퍼 오버플로우 취약점이 보인다. 앞서 말했듯이 컴퓨터는 2진수만 이해할 수 있다. 하지만 우리가 2진수로 데이터를 읽기에 부적절하다.따라서 메모리에 2진수로 저장되어 있는 값을 사용자가 알기 쉬운 형태로 출력하는 형태가 포맷 스트링이다. 버퍼오버플로우 취약점이 존재한다는 것은 앞서 확인했던것 처럼 알 수 있다.하지만 포맷 스트링 취약점 관련 문제는 처음 접하기 때문에 포맷 스트링 취약점이 정확히..

Wargame/FTZ 2018. 8. 1. 11:42

어셈블리에서의 함수 및 메모리 구조1

어셈블리언어의 함수 - 함수(function)라는 개념이 없다.- 스택 메모리를 이용하여 함수를 대체한다. 간단히 아래의 소스를 작성해보자. 123456789#include int main(){ printf("hello, world\n"); sleep(1000000); return 0;}cs 아래와 같이 컴파일 후 Ctrl + Z를 통해 프로세스를 중지시킨다. sample의 프로세스가 중지되었고 pid는 892이다. /proc/ 디렉토리에 현재 실행 중인 프로세스의 pid 이름으로 디렉토리가 생성된다.우리가 살펴볼 sample의 pid는 892이고 892 이름의 디렉토리가 있다는 것을 확인할 수 있다. 892 디렉토리로 이동하면 maps라는 파일이 보이는데 maps 는 프로세스가 사용하는 전체 메모리를 ..

Pwnable 2018. 7. 30. 10:57

어셈블리 프로그래밍 심화4

반복문 : for, while - while 반복문 12345678910int cnt = 10; int main(){ while( cnt > 0 ) { printf("%d\n", cnt); cnt--; } return 0;}cs - for 반복문 12345678910int cnt = 10; int main(){ for( ; cnt > 0; cnt --){ printf("%d\n", cnt); cnt--; } return 0;}cs for, while 반목문은 거의 동일하게 표현된다는것을 알 수 있다. 어셈블리로 표현하면 아래와 같이 표현할 수 있다. EX) 문자열을 압력받아서 거꾸로 표현하는 어셈블리 프로그램을 작성하시오 12345678910111213141516171819202122#include ch..

Pwnable 2018. 7. 27. 15:30

ASM to C with IDA - 070

C300_070 C300_소스코드 12345678910111213141516171819202122232425262728293031#include void main(void){ char cValue = 'a'; int iValue = 1234567; long lValue = 7890123; float fValue = 3.141592; double dValue = 3.141592; char *string = "korea"; char buffer[100]; sprintf(buffer, "char 형은 %c", cValue); puts(buffer); sprintf(buffer, "int 형은 %d", iValue); puts(buffer); sprintf(buffer, "long 형은 %ld", lValue)..

Reversing/ASM to C 2018. 7. 20. 11:13

ASM to C with IDA - 069 (strdup, strcpy)

C300_069 C300_소스코드 123456789101112131415161718192021222324252627282930#include #include #include void main(void){ char string[100]; char *pstr; puts("문자열을 입력한 후 Enter키를 치세요 !"); puts("아무 문자도 입력하지 않으면 프로그램은 종료됩니다 !"); do { gets(string); if (strlen(string) == 0) break; pstr = strdup(string); strcpy(string, "temporary string"); printf("문자열 string : %s \n", string); printf("문자열 pstr : %s \n", pstr);..

Reversing/ASM to C 2018. 7. 20. 10:01

ASM to C with IDA - 068 (strrev)

C300_068 C300_소스코드 12345678910111213141516171819202122#include #include void main( void ) { char string[100]; puts( "영단어를 입력한 후 Enter키를 치세요 !" ); puts( "아무 문자도 입력하지 않으면 프로그램은 종료됩니다 !" ); do { gets( string ); if( strlen(string) == 0 ) break; strrev( string ); puts( string ); } while( 1 );} Colored by Color Scriptercs IDA - Layout Graph IDA - Text View strrev함수: char *strrev(char *string)string문자열..

Reversing/ASM to C 2018. 7. 20. 09:17

어셈블리 프로그래밍 심화3

1. 형변환 1) 큰 -> 작은 ( 딱히 명령어가 필요 없다. 상위 비트 값이 사라지기 때문이다.) int a = 10;short b = a; 2) 작은 -> 큰 short a = 10;int b = a; movzx (zero extend) 상위 비트가 0으로 확장되어 양수 부호를 유지한다.movsx (sign extend) 상위 비트가 부호비트로 확장되어 부호를 유지한다. 1과 -1의 비트가 다르다는 것을 알아두자. 0000 0000 -> 11111 1111 -> -1 xor edx, edx를 통해 edx의 32bit 모두 0으로 채워진다.mov dl, -2를 통해 dl의 8bit가 1111 1110으로 채워진다.shl dl, 2를 통해 dl의 8bit가 1111 1000으로 채워진다.shr dl, 2..

Pwnable 2018. 7. 19. 11:50
  • 이전
  • 1
  • ···
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • ···
  • 27
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

LINK

  • About Me
  • Gtihub

CATEGORY

  • M4RC0 (262)
    • CPU side-channel attack (7)
      • Resource contention-based a.. (1)
      • Meltdown-type attacks (3)
      • Spectre-type attacks (0)
      • MDS (0)
      • Whitepaper (0)
    • Drone (0)
    • Linux (42)
    • GitHub management (0)
    • Vulnerabilties on Drones (0)
    • Programming (42)
      • C언어 (6)
      • TIPS 17기 (17)
      • JAVA (12)
      • JSP (4)
      • Python (3)
    • Wargame (61)
      • LOB (20)
      • FTZ (22)
      • Protostar (7)
      • pwnable.kr (12)
    • Reversing (75)
      • Keygen (4)
      • ASM to C (70)
      • CodeEngn (1)
    • Pwnable (8)
    • Crypto, Access Control, Pro.. (2)
    • SEEDLAB (5)
    • Paper review (1)
    • Github 관리 (1)
    • ETC... (17)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • 김성엽
  • tipssoft
  • tipsware
  • Tips프로그래밍
  • TIPS강좌
  • Tips프로그래밍강좌
MORE+

ARCHIVE

CALENDAR

«   2025/08   »
일 월 화 수 목 금 토
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

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT marco, ALL RIGHT RESERVED.
marco
블로그 이미지 MarcoKhan 님의 블로그
MENU
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
CATEGORY
  • M4RC0 (262)
    • CPU side-channel attack (7)
      • Resource contention-based a.. (1)
      • Meltdown-type attacks (3)
      • Spectre-type attacks (0)
      • MDS (0)
      • Whitepaper (0)
    • Drone (0)
    • Linux (42)
    • GitHub management (0)
    • Vulnerabilties on Drones (0)
    • Programming (42)
      • C언어 (6)
      • TIPS 17기 (17)
      • JAVA (12)
      • JSP (4)
      • Python (3)
    • Wargame (61)
      • LOB (20)
      • FTZ (22)
      • Protostar (7)
      • pwnable.kr (12)
    • Reversing (75)
      • Keygen (4)
      • ASM to C (70)
      • CodeEngn (1)
    • Pwnable (8)
    • Crypto, Access Control, Pro.. (2)
    • SEEDLAB (5)
    • Paper review (1)
    • Github 관리 (1)
    • ETC... (17)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바