이번 level의 힌트이다. 코드가 매우 간단해서 '엥? 레벨19가 이렇게 쉽다고?' 라고 생각할 수도 있으나, 자세히 보면 이번코드에는 setreuid가 없다. 즉 전처럼 25byte짜리 쉘코드로는 level20의 권한을 얻을 수 없다는 뜻이다.
우선은 메모리를 얼마나 할당받는지 확인해 보자
0x28은 10진수로 40이므로 SFP를 포함해서 44바이트를 오버플로우시키면 될 것이다.
위 사진을 보면 알 수 있다. 맞게 오버플로우 했음에도 불구하고 uid가 그대로인 것을 볼 수 있다.
그래서 setreuid를 실행하는 쉘코드
'\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80'
를 추가하였다.
환경변수의 주소를 구했으니 오버플로우 한다.