목록보안 (291)

변수 선언 부분 fflush(stdout) : 버퍼에 저장된 내용을 출력하는 함수 count가 100 이상이면 뭐하는 중이냐고 물어봄 check가 0xdeadbeef 이면 shellout 함수 실행 버퍼에 있는 값을 한바이트씩 가져옴 0x08이면 count가 감소함 default는 string 배열에 x값을 넣고 count를 증가시킨다. check : [ebp-104] string : [ebp-100] count가 감소하는 것을 이용하여 string [-4]로 check영역에 접근을 한다. 즉 0x08을 4개 넣어 주고 0xdeadbeef를 넣어 준다. password : swimming in pink

저번 문제랑 비슷한데 쉘 함수가 없어서 직접 쉘 코드 넣어주어야 함 환경변수를 이용해서 만들어주고 주소 구했음 buf : [ebp-56] *call : [ebp-16] password : why did you do it

포인터 함수 안에 들어간 printit 주소 값을 shell주소로 바꿔버리도록 하자 buf : [ebp-56] *call : [ebp-16] payload (python –c ‘print “\x90”*40 + “\xd0\x84\x04\x08”’; cat) | ./attackme password : king poetic

저번이랑 다른점은 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