4번 문제인 orc 이다.
이번 문제는 argv에 커맨드라인으로 입력받고, strcpy로 buffer에 값을 복사한다.
저번 문제에서 사용했던 환경 변수도 environ에서 전부 제거하고 시작하기 때문에 사용할 수 없다.
그리고 argv[1]의 47번째 문자가 \xbf가 아니면 종료해버린다.
따라서 argv[2]에 쉘코드를 넣고, argv[1]에서는 buffer(40) + sfp(4) = 44만큼 더미값으로 덮고, buffer의 ret을 argv[2]의 주소로 덮으면 될 것이다.
우선은 argv[2]의 주소를 알기 위해 임의의 값을 적어볼건데, argv[1][47]이 \xbf이여야하니, 아예 \xbf로 덮어보자.
그리고 argv[2]를 a로 덮어서 argv[2]의 입력이 시작되는 곳을 찾아보자.
보다시피 argv[2]의 입력이 시작되는 곳은 0xbffffc3c라는 것을 알 수 있다.
이제 buffer(40) + sfp(4) = 44만큼 더미 값을 채우고, 0xbffffc3c를 리틀엔디안으로 넣고, 두 번째 커맨드라인으로 입력하는 값에는 nop sled 100바이트와 쉘코드를 넣어주자.
성공적으로 쉘을 땄다.
cantata
'Hacking > Pwnable' 카테고리의 다른 글
[LOB] 3번 - goblin (0) | 2020.08.16 |
---|---|
[LOB] 2번 - cobolt (0) | 2020.08.16 |
[LOB] 1번 - gremlin (0) | 2020.08.10 |
Hackerschool FTZ - level9 write up (0) | 2019.09.21 |
Hackerschool FTZ - level8 write up (0) | 2019.09.18 |