HanJeouk의 개인공부 블로그

Stack7의 코드를 보면 필터가 걸려있다. 그래서 ROP(ppr)기법을 쓰기로 했다. 우선 환경변수를 설정하고 주소를 알아내자.


환경변수의 주소는 0xbffffdcf 다.

이제 ret 주소를 알아내자.

8048492!

이제 페이로드를 짜자.








'Wargame > Protostar' 카테고리의 다른 글

Protostar Heap1  (0) 2017.12.31
Protostar Heap0  (0) 2017.12.31
Protostar Stack6  (0) 2017.04.05
Protostar Stack5  (0) 2017.04.05
Protostar Stack4  (0) 2017.04.02

사실 Stack6는 Stack5랑 똑같이 RTL을 써서 풀면 아주 쉽게 풀린다. 넘어가고 싶지만 그냥 하기로 했다.

자 RTL을 쓰자 시스템 주소와 /bin/sh의 주소는 저번에 구했던 것과 같을테니 과정은 생략한다.

버퍼 크기를 보면

버퍼의 크기가 76byte라는 걸 알 수 있다.


이제 페이로드를 만들어보면



'Wargame > Protostar' 카테고리의 다른 글

Protostar Heap0  (0) 2017.12.31
Protostar Stack7  (0) 2017.04.06
Protostar Stack5  (0) 2017.04.05
Protostar Stack4  (0) 2017.04.02
Protostar Stack3  (0) 2017.04.01

Stack5 코드를 보면 아~주 간단하게 나온다. 나는 여기에 RTL 기법을 쓰기로 했다.

버퍼의 크기를 구하는 건 저번에 설명했기 때문에 생략한다. 버퍼의 크기는 dummy를 포함해 72byte다.


이제 여기에 RTL 기법을 쓸건데 우선 필요한게 두 가지다.


바로 시스템주소와 /bin/sh의 주소다. 지금부터 구하겠다.


우선 시스템주소다. 

시스템주소는 gdb로 브레이크 포인트를 걸고 실행시킨 다음 p system 명령어를 이용하여 구할 수 있다.

시스템 주소는 0xb7ecffb0이다.

이제 /bin/sh의 주소를 구하면 된다.


/bin/sh는 코드를 구현해서 짰다.

/bin/sh의 주소는 0xb7fb63bf다.


자 이제 페이로드를 짠다.

페이로드는 버퍼+더미+sfp를 포함해 76을 채우고 시스템 주소 그 다음에는 인자값으로 4바이트 마지막으로는

/bin/sh의 주소를 넣어주면 될 것이다.




'Wargame > Protostar' 카테고리의 다른 글

Protostar Stack7  (0) 2017.04.06
Protostar Stack6  (0) 2017.04.05
Protostar Stack4  (0) 2017.04.02
Protostar Stack3  (0) 2017.04.01
Protostar Stack2  (0) 2017.03.29