Golem
-
Level12 (golem -> darkknight)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:33
위의 코드를 확인해 보면 FPO 기법을 이용하는 문제 입니다. SFP는 무엇인가, FPO 기법이 무엇인가 에 대해서 먼저 공부를 해봐야 할 것 같습니다. FPO를 사용하기 위해서는 필요한 조건이 존재 합니다. 1. SFP 영역에서 1바이트 오버플로우가 반드시 일어나야 합니다. (strncpy에 보면 41-40 = 1 바이트) 2. 메인 함수 이외의 sub 함수가 필요합니다. (main 함수 이외에 problem_child 함수가 존재 한다.) SFP 란? Stack Frame Pointer의 약자로 Saved Frame Pointer 라고도 불립니다. 이전의 함수의 EBP 주소를 저장하는 공간 입니다. 1바이트를 이용해서 OverFlow를 실행해야 하는데, 여기서 1바이트는 SFP의 첫 바이트를 이야기 ..
-
Level11 (skeleton -> golem)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:31
위의 소스코드를 확인해 보면 egghunter 였었던 환경변수를 못쓰게 하는 구문이 사라져 있습니다. 하지만 stack destroyer이 새로 생겻는데 buffer부터 0xbfffffff까지 RET를 제외한 모든 부분을 0으로 초기화를 해버리는 역할을 합니다. 이런 상황에서 사용할수 있는 것은 라이브러리인데, 정적 라이브러리는 .a 로 끝나는 파일이며, 빌드를 할때 실행파일에 포함되는 파일입니다. 동적 라이브러리는 .so 로 끝나는 파일이며, 여러 프로그램에 공유 되는 라이브러리 입니다. 동적 라이브러리가 정적 라이브러리 보다 더 우선시 되기 때문에 -fPID 옵션과함께 해당 라이브러리 이름을 NOP 과 쉘코드로 하나 생성을 합니다. attack.c 는 임의의 함수 하나를 만들었습니다. 그리고 생성한 ..
-
[Lord of SQL_injection] #11 golem$ 웹 해킹 $/los.rubiya.kr 2019. 4. 5. 19:15
이번 문제는 blind sql injection문제 인것 같은데 필터링이 좀더 추가 됬다.. or 와 and는 저번 문제에서 ||(%7c%7c) 와 &&(%26%26)으로 우회해서 입력을 했었지만 이번에는 substr함수와 = 이 추가로 필터링 되는것 같다. ?pw=' || id like 'admin = 을 우회 할수 있는 like를 이용해서 일단 id의 값을 admin으로 설정했다. 그이후에 blind sql injection을 하면 될것 같다. = 는 like로 substr은 mid함수로 우회했습니다. mid(변수명, 인덱스위치, 위치로부터문자갯수) 형식으로 쓰이기 때문에 mid(pw, {}, 1)로 고정해두면 1자리씩 비교하는데 인덱스 위치만 for 문을 이용해서 바꿔주면 편하게 쓸수 있습니다.! ..