- Today
- Total
목록Pwnable/[Wargame]FC3 (4)
Phantom
FC3에 입성 했다.전의 LOB와는 달리 페도라 코어 3에는 다음 메모리 보호기법이 추가되었다.[환경 요약]Stack Dummy : ODown privileage of bash : ORandom Stack : ORandom Library : XRandom Program Binary Mapped : XASCII Armor : ONon-Executable Stack : ONon-Executable Heap : OStack Carany : XStack Smashing Protector : X 요약하자면 ASLR은 스택에만 걸려 있고, ASCII Armor, NX가 스택과 힙에 걸려 있다.ASLR이란 Address Space Layout Randomization – 프로그램의 메모리영역을 랜덤화 시키는 것이다...
이번 문제는 RET Sleding 을 방해해버리고 SFP도 복원시킨다 그리고 힌트에는 GOT Overwrite와 pop_pop_ret 함수가 있다. 이번 문제는 GOT Overwrite를 이용한 ROP이다. 생각 보다 쉬울 듯 하다. Ret Sleding을 할 필요도 없고, SFP를 조작할 필요도 없다. 우리는 PPR가젯이 있기 때문에 strcpy함수로 어느 함수의 GOT에 system함수의 주소를 넣고 또 다른 어느 곳에 /bin/sh문자열 가젯을 넣을것이다 그리고 어느 함수를 실행하면 system("/bin/sh")가 되게끔 할 것이다. 소스를 보면 strcpy다음에 memcpy와 memset이 있는데 우리는 memcpy의 GOT에 system함수의 주소를 넣고 Bss 영역에 /bin/sh를 넣고 실..
이번 문제는 setuid가 걸려 있지 않고, xinetd가 hell_fire권한으로 문제를 실행 하고 있다. 라고 어느 블로그에 글이 있다. 뭔 소린지 이해가 가지 않아서 찾아 보기로 했다. Xinetd로 문제를 실행 하고 있다는 뜻은 이것이었다. Xinetd.d로 바이너리를 서비스하면 자동으로 입출력을 연결시켜주며 쉘코드없이 /bin/sh를 해주는 것만으로도 쉘을 딸 수 있다고 한다. 우리는 이 문제를 7777포트를 이용하여 풀면 되는 것이다. 이번 문제는 풀이가 3개나 있다고 한다. Do_system()을 이용한 풀이, another Fake EBP, GOT OverWrite 이렇게 있다고 한다. Do_system()을 이용한 풀이 Do_system()이란 원래 system()함수 내에 호출되는 함수..
이번 문제는 RET Sleding 문제이다. NOP Sleding 이랑 다를 것이 없다 단지 RET를 여러 번 넣어 RET명령으로 원하는 곳에서 할 뿐이다. 이번 문제에서는 Fake EBP 사용을 막았다 SFP를 저장하고 오버플로우 한 다음에 다시 복원한다 그러면 당연히..SFP는 안전해진다. RET를 계속 실행 시킬 경우 ESP는 계속 높은 주소로 올라가게 된다. Ret는 jmp eip 이기 때문에.. 우리는 그럼 우리에게 맞는 주소를 찾아야 한다. 우선 strcpy 바로 다음과 ret에 BP를 걸고 RET에 아무 값이나 넣고 실행해본다. 자… 0x41414141 다음에 여러 부분이 보이는데 이제…RET Sleding으로 필요한 곳을 찾아서 이 다음으로 필요한 함수를 쓸 것이다. 필요한 함수는 아마 e..