System&Write up/CTF

[제 1회 Root CTF] Point to pointer! - (529 point)

Jubil 2017. 12. 24. 14:15
반응형


 

기대를 안고 문제를 풀기 시작했습니다.

 


 

main 함수 소스입니다.

 


String을 봤는데 “/bin/sh”도 있습니다.

 


막 찾던 도중, 여기서 쓰이는 걸 발견했습니다.

 



다시 main함수를 보면 buf0x30(48)byte만큼 잡고, (_QWORD *)buf + 2  , 16byte를 건너 뛰고 그 자리에 어떤 함수의 주소를 넣습니다.


 


 

welcome to RootCTF! 를 출력해주는 함수입니다.

(_QWORD *)buf + 2를 호출하면 저 함수가 실행될 것입니다.

 

read로 사용자에게 buf에 입력을 받고, Y를 받으면 다시 (_QWORD *)buf + 2를 호출합니다.

read로 받을 때 0x64(100)byte를 받기 때문에, (_QWORD *)buf + 2를 조작할 수 있어요!

 

(_QWORD *)buf + 2를 아까 찾은 system(“/bin/sh”)를 실행해주는 함수의 주소로 바꿔주고 Y를 입력해주면, 쉘이 실행될 것입니다.

 


 

(_QWORD *)buf + 2를 변조하기 위해서 앞에 8*2만큼 더미를 주고, 쉘을 실행해주는 함수로 변조해줬더니 쉘이 따였습니다. cat flagflag를 읽어왔습니다.

 

FLAG{P0InT_2_pOiNt_2_PO1t3R!}

 




그리고 파이썬 스크립트도 짜봤습니다.

 


 

64bit이기 때문에 pack의 첫 번째 인자를 “<Q”로 줘야합니다.

 

아래 while문은 pwn toolinteractive() 함수를 간단하게 구현한 코드인데, Nextline님께 도움을 받았습니다.

 

반응형

'System&Write up > CTF' 카테고리의 다른 글

[Pico CTF 2013] overflow4  (0) 2018.01.17
[Pico CTF 2013] overflow3  (0) 2018.01.16
[Pico CTF 2013] overflow2  (0) 2018.01.14
[Pico CTF 2013] overflow1  (0) 2018.01.14
[Plaid CTF 2013] ropasaurusrex  (0) 2018.01.03