목록전체 글 (360)
저번이랑 다른점은 check가 포인터 변수가 되었음 포인터 주소를 넣어주어야 함 buf : [ebp-56] check : [ebp-16] 주소도 찾았음 password : about to cause mass
check : [ebp-16] buf : [ebp-56] payload (python –c ‘print “\x90”*40 + “\xef\xbe\xad\xde”’;cat) | ./attackme 갑자기 쉬워짐 password : guess what
이번엔 중간에 함정이 걸려있음 먼저 환경변수 만들어 주겠음 buf가 [ebp-1048] i가 [ebp-12] 1036 차이가 남 payload = dummy(1036) + i(4) + dummy(12) + ret(4) i = 0x1234567 ret = 쉘 주소 payload가 좀 잘려서 나온 듯 함 password : what that nigga want?
gets에서 취약 함수 발생 이번에는 ASLR이 걸려있음 환경변수를 이용하도록 하겠음 코드가 짤려서 나오는데 저거 그냥 쉘 코드임 export [함수 이름]=[함수내용]으로 환경변수 설정이 가능함 환경변수 주소를 얻기 위해 간단한 c코드를 작성하고 주소를 얻음 268개 더미를 주고 ret값에 환경변수 주소를 주어서 공격에 성공함 password : have no clue
strcpy 함수는 메모리를 초과하여 복사하기에 취약 함수이다. BOF가 발생한다 그 아래에 printf함수에서 FSB도 발생이 가능하다. 파일을 찾아주자 찾은 후에 gdb를 돌려보았다. str변수의 위치는 [ebp-264]이다 ret주소는 268byte 뒤에 있다. payload = Nopsled(243) + 쉘 주소(25) + 인자 값 주소(4) 쉘코드는 25byte를 가져왔다. ret주소에 인자 값 주소를 준다 그러면 Nopsled를 타고 쉘이 실행될 것이다. 인자 값 주소는 FSB를 이용하여 쉽게 찾았다. password : it is like this
공유 메모리에 대한 개념이 필요하다. 원래 보통 프로세스에서 메모리는 해당 프로세스만 사용함 이게 무슨 말이냐면 메모리에 여러 변수들 사용할 수 있는 건 다른 프로세스가 아닌 자기 프로세스만 접근 할 수 있음 근데 아주 예외로 다른 프로세스가 접근할 수 있게 만드는 것이 공유 메모리라고 함 이게 IPC기법임 hint에서 key_t값을 주었는데 저게 공유 메모리를 할당할 수 있는 고유 key값임 일단 IPC코드를 짜려면 함수에 대해서 알아야 함 IPC사용하려면 #include #include 그리고 연결하기 위한 최소한의 두 개 함수를 알아야 함 int shmget(key_t key, size_t size, int shmflg); 1) shmget : 인자로 전달된 key의 값으로 공유 메모리를 얻고 공유..
드디어 BOF 문제가 나옴 fgets에서 40byte를 읽어 취약점이 발생함 먼저 level10권한 파일 찾음 bof파일 실행시키고 go단어로 다 때려박았더니 됐음 이대로 끝내긴 아쉬우니 디버깅 돌려보겠음 gdb 켜서 intel버전으로 문법 바꿔버렸음 buf가 [ebp-40] buf2가 [ebp-24] 40 - 24 = 16 16 dummy 주고 go 문자열 주면 됨 password : interesting to hack!