목록Wargame/The Lord Of The BOF (FC3) (5)
농소
[ dark_stone ] 문제를 보시면 문제푸는 요령은 전 문제와 동일합니다.차이점은 remote bof를 통해서만 권한을 딸 수 있는데요nc를 이용하여 외부에서 공격해주시면 되는 문제입니다. 이전 문제와 동일하게 우선 가젯들을 모아봅시다. ppr 가젯 0x080484f3 strcpy's plt = 0x8048438printf's plt = 0x8048408 printf's got = 0x0804984c system = 0x007507c0이제 system의 주소와 동일한 값들을 1바이트씩 찾아봅니다. 가젯들을 전부 모았으니 정리해 봅시다 0x7507c0 :printf's plt = 0x8048408= "\x08\x84\x04\x08"printf's got = 0x804984c= "\x4c\x98\x04..
[ evil_wizard ] 이번에는 fake ebp를 막았고 고맙게도 문제에서 //healing potion을 주었네요system함수를 이용해 쉘을 실행시키면 권한이 상승할 것입니다.힌트로 GOT overwriting을 이용하라고 나와있네요 코드 제일 밑에 수행되는 printf함수의 GOT를 system GOT로 변환하면 될것 같습니다.그러기위해선 고정값이 되는 지점에서의 값을 strcpy를 통해서 GOT를 변경해야하는데요system의 got값을 가르키는 주소를 찾아야 strcpy를 할 수있는데 아쉽게도 그런값을 가지고 있는 곳은 없습니다.그러면 어떻게 해야하느냐?변하지않는 영역의 값을 살펴봐 1바이트씩 해당 코드를 찾아 strcpy를 해주면 됩니다. strcpy를 4번 해주면 되겠네요하지만 여기서 문..
[ hell_fire ] 이번문제느 remote bof를 이용하라고 나오네요그리고 fake ebp나 got를 이용하면 된다고하니 저는 fake ebp를 이용해 보겠습니다. 공격할 파일을 본 결과 setuid가 걸려있질 않아 RTL을 이용해도 권한이 떨어지질 않습니다.소스코드를 보면 알듯이 슈퍼데몬을 이용하여 공격을 해야하는데요 해당 xinetd.d 디렉토리에 들어가 hell_fire를 보면 알 듯이이 파일을 원격으로 접속할때는 사용자가 hell_fire인것을 알 수 있습니다.즉, 원격으로 할 시 setuid설정이 되어있다고 보시면됩니다. 즉 파이프라인으로 공격할 때 nc를 이용하여 원격접속을 이용하면 될것입니다. payload | ./hell_fire ( x )payload | nc localhost 7..
[ dark_eyes ] fake ebp를 막고힌트로 RET sleding을 이용하라고 나와있네요ret sleding이란 에필로그에 ret주소를 넣고 반복적으로 사용하여 공격자가 원하는 위치로 eip를 변경할 수 있게 하는 기법입니다. dummy 268 | dddd 를 넣어본 결과입니다. 보시면 랜덤스택이 적용이 되었는데도 메모리값이 바뀌질 않는곳이 있습니다. 다시한번 실행해서 본 결과 빨간색으로 네모친 부분의 값이 변경이 안됨을 알 수 있습니다.이것을 execl의 첫번째 인자로 잡고서 공격을 진행해 보겠습니다.execl( "/bin/my-pass", NULL );으로 생각하고 만들어볼 생각입니다. 자 우선 해당위치가 첫번째 인자로 쓰기위해 ret sleding을 이용하여 위치를 바꾸어줍니다.ret주소를..
페도라캐슬 1층 iron_golem.c파일입니다보시는바와 같이 저번 LOB의 첫번째문제인 gremlin과 문제가 같습니다.딱 보면 디버거를 실행을 하지 않아도 bof을 할 수 있을정도로 매우 취약한 파일처럼 보입니다. 그러나 이 FC1층부터는 버전이 업데이트 되면서 메모리보호기법이 적용 되었는데요 1. 스택가드 : 더미 생성 - 스택내에 함수의 변수 크기를 정확하게 예측하지 못하게 더미값을 추가합니다. 2. 아스키 아머 - 라이브러리의 영역이 가장 낮은 영역으로 이동됨 ( 0x00번지에 위치 ) - RTL을 이용 할 시 라이브러리 호출은 되지만 인자값을 맘대로 변형이 불가능함. 3. 랜덤스택 (ASLR = Address Space Layout Randomization ) - 실행을 할 때마다 메모리 주소..