둘둘리둘둘리둘둘리둘둘리둘둘리둘
공유 메모리는 이름 그대로 여러 프로세스가 함께 사용하는 메모리이다. key_t값 7530으로 공유메모리에 접근해서 내용을 읽어 오면 되겠다shmget() //공유 메모리 식별자 획득shmat() //공유 메모리의 주소 획득 --풀이--[level10@ftz tmp]$ cat ./t.c#include #include #include int main(){ int shm_id; void *shm_addr; shm_id = shmget( (key_t)7530, 1024,0); shm_addr = shmat( shm_id, 0, 0); printf("%s\n",(char *)shm_addr); return 0;}[level10@ftz tmp]$[level10@ftz tmp]$ gcc ./t.c[level10@f..
10byte 크기 buf, buf2가 있고 fgets로 40byte를 표준입력에서 받아와 buf에 넣는다. buf에 입력을 받고 buf2를 "go"와 비교해서 맞으면 쉘을 띄워준다..소스를 보고 스택을 유추해보면 대충 [그림 1]과 같다. Low address buf (10byte) buf2 (10byte) SFP RETHigh address[그림 1] buf가 10byte이니까 fgets에서 더미로 10byte를 체우고 go 를 입력하면 될것같지만 buf와 buf2사이에 CPU가 처리하기 편하도록 줄을 맞추기 위해 쓰레기값이 들어가기 때문에 아래 결과처럼 생각처럼 성공하지 않을것이다. 그럼 디버거로 buf크기를 구해야 할탠데 아래처럼 bof파일에는 setuid가 level10권한으로 걸려있어서 디버거로..
hint를 단서로 find의 -size N[bckw] 옵션을 이용해서 찾아보면 ..(b: 블록, c:바이트, k:키로바이트, w:2바이트 워드)[level8@ftz level8]$ find / -size 2700b 2>/dev/null[level8@ftz level8]$ find / -size 2700c 2>/dev/null/var/www/manual/ssl/ssl_intro_fig2.gif/etc/rc.d/found.txt/usr/share/man/man3/IO::Pipe.3pm.gz/usr/share/man/man3/URI::data.3pm.gz 상당히 수상해 보이는 found.txt가 있는고, 파일을 열어보면 level9의 shadow 데이터가 나온다.[level8@ftz level8]$ cat /..
실행 화면은 이렇다 .. [level7@ftz tmp]$ /bin/level7Insert The Password : aaaacat: /bin/wrong.txt: No such file or directory /bin/level7을 실행하면 먼저 문자열을 입력받고 cat으로 /bin/wrong.txt를 보여주려는것 같은데 cat이 /bin/wrong.txt를 찾을 수 없다고 한다. [level7@ftz tmp]$ ls -l /total 197drwxr-xr-x 2 root root 4096 Sep 10 2011 bin 물론 level7에겐 /bin 디렉토리에 쓰기권한이 없다. 다른 글을 보면 wrong.txt의 내용은 이렇다. 올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에...--_--_- --__..