Rtl
-
[FTZ Level19 풀이]System/FTZ 2018. 2. 17. 01:20
[Level19 Code]12345678#include void main(){ char buf[20]; gets(buf); printf("%s\n",buf);} cs코드는 굉장히 심플하다.gets( )에서 BOF취약점이 발생하니까, 이 점을 이용해서 RTL공격으로 쉘을 따도록 하겠다.RTL에 대해서는 블로그에 정리해두었으니, 참고하길 바란다.[RTL 정리글] RTL공격을 하기 위해서는 System( )주소, /bin/sh의 문자열 위치, RET까지의 offset을 구해야 한다.우선 attackme가 사용하는 libc버전을 확인해보자 [ldd attackme]ldd명령어로 libc버전이 /lib/tls에 위치한 so.6버전임을 알아냈다.libc버전을 알아냈으니 이제 System( )와 /bin/sh의 문자..
-
[FTZ Level12 풀이]System/FTZ 2018. 2. 15. 23:49
[Level12 Code]1234567891011121314#include #include #include int main( void ){ char str[256]; setreuid( 3093, 3093 ); printf( "문자열을 입력하시오.\n" ); gets( str ); printf( "%s\n", str );} cs 해당 문제는 Level11과 비슷하지만, printf( )의 FSB 취약점이 사라졌고 gets( )함수로 입력을 받는다. 나는 이번 문제를 RTL을 이용해서 풀어봤다.RTL정리 : [이곳] #공격 시나리오1. EIP까지의 offset을 구한다. 2. System( )의 주소를 구한다. 3. /bin/sh문자열의 주소를 구한다. 4. RET공간에 System( )주소를 저장해서 Sy..
-
[02-11 공부정리(Chaining RTL 정리)]공부정리 2018. 2. 11. 01:10
오늘은 protostar Stack6~7번을 풀었다.6번은 RTL을 7번은 Chaining RTL을 이용해서 풀었다.7번같은 경우는 ASLR이 걸려있는 상황이라면 ROP를 이용해야 하는 문제였다.내일은 ASLR이 걸려있는 상태라고 가정하고 ROP로 문제를 풀어볼 생각이다. 자 그럼 오늘 공부한 부분들을 정리하도록 하겠다. [Chaining RTL] RTL공격을 할때 System( )뒤에 dummy값으로 "AAAA"를 준 적이 있다.RTL 정리할 때도 말했지만 dummy값 부분은 의미없는 부분이 아니다.system( )가 끝나고 복귀할 주소가 저장되어 있는 공간이다.하지만, 우리는 /bin/sh을 따내면 그 뒤 상황은 어디로 복귀하던 상관이 없기에 "AAAA"라는 dummy값을 준 것이다. Chaining..
-
[02-08 공부정리(RTL정리)]공부정리 2018. 2. 8. 03:32
오늘은 RTL에 대해서 공부했으니, 실습한 부분은 정리하겠다. [RTL이란?]Return To Library로 프로그램 ret(리턴 값)에 공격자가 원하는 라이브러리 함수 주소를 로드 시켜해당 라이브러리 함수를 실행하는 공격기법이다. 예를들면 System함수를 호출한다거나 또, System함수를 호출한다거나... 맞다. 우린 쉘을 따면 된다.또, RTL공격은 메모리 보호 기법중 NX Bit와 DEP를 우회한다.NX bit(Never Execute bit) : ELF 보호기법. NX특성으로 모든 메모리영역을 데이터 저장용도로만 사용한다. 따라서 쉘코드 실행을 방지한다.DEP(Data Execution Prevention) : PE 보호기법. 데이터 실행 방지로 스택이나 힙에서 쉘코드 실행을 방지한다. 간단..