티스토리 뷰

[Hackerschool] F.T.Z

해커스쿨 - level12

lHATAl 2017. 11. 15. 00:10

이전에 획득한 비밀번호로 로그인을 하였다.



힌트의 내용을 보아 gets를 통해 버퍼 오버플로우를 일으킬 수 있다는 점을 발견하였다.


이번 문제도 지난 level11에서 해결한 것과 같은 방법으로


"A"*243+"shellcode(25bytes)"+"shellcode 시작주소" 를 입력하면 버퍼오버플로우가 일어나 쉘코드가 있는 주소로 리턴함으로 쉘을 취득할 수 있는 것이다.


couldn't get registers: operation not permitted 라는 에러 메세지가 발생하면서 gdb에서 정상적인 디스어셈블이 불가능하게 되었다.


현재 서버가 닫혀있어 로컬 서버로 시도했지만, 로컬 서버에couldn't get registers: operation not permitted 라는 에러 메세지가 발생하면서 gdb에서 정상적인 디스어셈블이 불가능하게 되었다. 이에 대한 해결 방법으로 tmp 폴더에 복제를 한 후 공격을 시도해보았다. 해당 프로그램을 복사하여 수행하였지만 이때 문제로는 주소가 무작위로 변동하여 공격에 대해서 성공을 하지 못하였다. 



서버가 열려 정상적으로 공격을 수행하여 생각하는 공격 방법이 맞는지 시도를 해야할 것 같다.




p.s. 버퍼 오버플로우 공격을 하면서 NOP 슬라이드 라는 기법을 활용하는 것을 찾았다. 공격할때 A를 넣지말고 NOP인 \x90을 입력하고 리턴 주소를 버퍼의 시작주소로 설정하면 shellcode가 적힌곳까지 미끄러지듯이 이동하는 기법을 말한다. 다음과 같이 공격을 하게 된다면 shellcode의 주소값을 별도로 구할 필요없이 버퍼의 시작주소로 설정해주면 간단하게 해결된다.

'[Hackerschool] F.T.Z' 카테고리의 다른 글

해커스쿨 - level14  (0) 2017.11.16
해커스쿨 - level13  (0) 2017.11.15
해커스쿨 - level11  (2) 2017.11.06
해커스쿨 - level10  (0) 2017.11.06
해커스쿨 - level9  (0) 2017.11.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함