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

+ Recent posts