RTL
-
LEVEL 17 succubus write-upSystem hacking training/Hackerschool LOB 2018. 5. 17. 20:42
zombie_assassin -> succubus 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394[zombie_assassin@localhost zombie_assassin]$ cat succubus.c/* The Lord of the BOF : The Fellowship of the BOF - succubus - calling functions continuously */ #include #include #include // the ..
-
LEVEL 13 bugbear write-upSystem hacking training/Hackerschool LOB 2018. 4. 26. 01:54
darkknight -> bugbear [문제 + 힌트] 문제를 보면 bof는 터지지만 argv[1][47]의 값이 bf라면 예외처리가 되며 종료되기 때문에ret에 스택의 주소 말고 다른 영역의 주소를 적어야할것같다. 힌트 부분을 보면 알다시피 이 문제는 RTL을 이용하여 풀면된다. [Link - RTL 이란?] 페이로드는 `python -c 'print "A(dummy)" * 44 + "system() address" + "dummy 값" * 4 + "/bin/sh\00"'` 이런식으로 구성하면 된다. 이 페이로드를 작성하기 위해 준비물이 필요한데system()의 주소와 system()에 인자로 줄 /bin/sh\00가 필요하다. 그전에 이 바이너리가 static linked 인지 dynamic lin..
-
ELF Technique - RTL ChainingSystem hacking training/Knowledge 2018. 2. 22. 21:49
RTL Chaining 이란 RTL 기법을 응용하여 라이브러리의 함수의 호출을 연계하는 것입니다. RTL 기법에서는 하나의 함수만 호출하였다면, RTL Chaining에서는 여러 함수를 연계하여 호출하는 것을 말합니다. [Link] RTL(Return To libc) 이전의 RTL에서는 return address가 들어가는 곳에 AAAA(dummy(4))를 넣어줬었는데요. 바로 이 AAAA를 넣어줬던 위치에 pop ret 과 같은 명령어의 주소를 넣어 스택 포인터를 다음 함수로 위치시키는 기법이 RTL Chaining입니다. [실습]먼저 실습환경은 pwntool 사용을 위해우분투 64bit 환경에서 바이너리를 32bit로 컴파일 하였다. 먼저 취약한 바이너리부터 만들어줍니다. read()로 buf에 51..
-
ELF Technique - RTL(Return To Library)System hacking training/Knowledge 2018. 2. 16. 16:58
RTL이란? return to library 의 약자이고 linux에서는 return to libc라고 불리기도 한다.(linux에서 library가 libc) 이 기법을 이용하면 프로그램에 system()가 없어도 라이브러리의 system()를 호출하여 사용이 가능하다. 이 기법을 익히기 전에 먼저 알고가야할 것들이 있다. 바로 plt와 got이다. plt 란?procedure linkage table의 약자로, 사용자가 만든 함수는 plt를 참조할 필요가 없지만 외부 라이브러리에서 가져다 쓸 경우 plt를 참조하게 된다.예를 들어 우리가 바이너리에서 만든 함수들 (main(), func() 등)은 plt를 참조할 필요가 없다.plt는 어떤 함수들이 나열되어있는 테이블이라고 생각을 하고 넘어간다. go..