상세 컨텐츠

본문 제목

18. succubus -> nightmare

Pwnable Write-Up/02.hackerschool L.O.B

by RACC8N 2020. 3. 11. 18:00

본문

ret주소를 무조건 strcpy로 덮어야한다. 그것 말고는 다른 조건은 없는것 같다.

 

우선 strcpy의 주소를 알아보자.

 

0x8048410이다. 그리고 ret주소 다음 4바이트를 A로 초기화한다. 

 

strcpy의 인자값은 2개이므로 buf + sfp (A *44) + strcpy + BBBB + CCCC + DDDD값을 줘보자.

 

buf + sfp (A *44) + strcpy + BBBB + CCCC + DDDD 값을 줬는데 BBBB(42424242)값이 보이질 않는데 이는 위에서 AAAA로 덮어씌어지기 때문이다.

 

덮어씌어진 부분의 주소는 0xbffffa30이다.

 

CCCC, DDDD는 strcpy의 인자들인데, CCCC에 strcpy가 끝난 후 ret주소의 주소를, DDDD에는 쉘코드 시작 주소의 주소를 넣어주면 strcpy로 인해 strcpy가 끝난 후 ret주소가 쉘코드 실행주소로 덮어질 것이다.

 

그러면 쉘코드 실행주소를 DDDD 뒤에 4바이트 추가해준후, DDDD는 그 위치 즉 0xbffffa3c를 가리키게 하면 될 것이다.

 

정리하면 buf + sfp + strcpy + Dummy(strcpy's ret) + argv1(dummy주소) + argv2(shellcode주소) + shellcode가 된다. 

 

역시 카피본과 root에선 쉘이 따지지만 원본에선 따지지않는다 음..

 

다음 단계로 넘어가보자.

'Pwnable Write-Up > 02.hackerschool L.O.B' 카테고리의 다른 글

20. xavius -> death_knight  (0) 2020.05.03
19. nightmare -> xavius  (0) 2020.03.11
17. zombie_assassin -> succubus  (0) 2020.03.11
16. assassin -> zombie_assassin  (0) 2020.03.11
15. giant -> assassin  (0) 2020.03.11

관련글 더보기

댓글 영역