COMPUTER435 brainfuck get으로 fgets->system으로 바꿀 것이다. do_brainfuck 함수 아스키코드 60: 아스키코드 43: + 아스키코드 45: -아스키코드 46: .아스키코드 44: ,아스키코드 91: [을 의미한다. payload=''tape을 가리키는 p를 fgets를 가리키게 올려주어야 한다. payload+=''*4bf_libc.so에서 system함수의 주소: 3A920 fgets함수의 주소: 5D540 gets함수의 주소: 5E770 from_system_to_fgets=0x5D540-0x3A920from_gets_to_fgets=0x5D540-0x5E770 fgets_addr=u32(s.recvn(4)[:4])system_addr=fgets_addr-from_system_to_fgetsgets_.. 2016. 11. 6. 기말1 과제AVL.inI 6I 2I 9I 1I 5binary search tree를 만들자.AVL.outinorder preversal 출력preorder preversal 출력 결과하나씩 하나씩 그 다음에 avl 깨지는 부분 BN써주기AVL 트리 수정 없이그냥 최초 깨지는 부분 계속 2-3-4 Tree-every node has 2,3, or 4 children except leaves-all leaves are at the bottom level of the tree insertion(top-down)1) whenever insert encounters a 3-key node,the middle key is ejected and is placed in the parent node.2) If the root .. 2016. 11. 1. ELF32 - Stack buffer overflow basic 3 check가 0xbffffabc가 되어야 한다.이때, check는 buffer[]의 밑부분에 있으므로,버퍼 오버플로우를 반대방향으로 시켜야 하는데,다행히 count--해주는 부분이 있다.\x08을 넣으면 count--이 되므로4칸 --시켜준다음에, 즉 count를 -4로 만들어 준 다음에 넣어주면 check값을 바꿀 수 있다. 2016. 11. 1. ELF32 - Stack buffer overflow basic 2 buf크기는 128인데,fgets(133)을 하므로 버퍼오버플로우를 통해 sup의 함수를 shell함수로 바꾸어 주면 된다! buffer 들어가기 시작하는 부분: 0xbffffbccsup있는 부분: 0xbffffc4cc4c-bcc=128자리는 A로 채우고그 다음을 \x64\x84\x04\x08로 채우면 된다. 2016. 11. 1. xavius__미해결__Remote BOF local bof만 하다가 remote bof가 무엇인지 모르는 분들?-나 local bof의 경우에는 해당 서버의 계정이 있을 때 서버에 접속하여root 권한 아니면 자신보다 더 높은 권한을 얻을 수 있게 된다.그런데 해당 서버에 계정이 없을 때는지금 말하는 remote attack을 하면 된다.remote bof는 서버에서 제공하는 취약한 서비스 프로그램을exploit하여 해당 서비스를 실행하는 데몬의 실행권한(쉘)을 가져올 수 있게 된다. 그럼 xinetd로 작동하는 프로그램에 대해서 remote bof를 해보도록 하겠다. 데몬의 두가지 실행 모드1. xinetd 수퍼데몬에 의해 제어되는 서비스 데몬2. 독립적으로 실행되는 Standalone 환경의 서비스 데몬 xinetd 수퍼 데몬의 서비스 데몬.. 2016. 11. 1. nightmare 버퍼 앞에도 지우는 것은LD_PRELOAD의 사용을 막기 위해서이다.스택도 못쓰고, 바이너리(?)도 못쓴다.fgets를 이용하자fgets는 버퍼를 이용한다.그 버퍼를 찾기 위해 stdin을 까봤다. fgets 실행전 fgets 실행후 0x40015000에 입력값이 버퍼로 쌓인다는 것을 알 수 있다. 2016. 10. 31. giant argv[1][47]=\xbf이면 안된다!! argv[1][47]=\x40이어도안된다!! libc함수를 이용하지 못한다. buffer+sfp hunter가 있어서 buffer+ebp까지 쭉 지워진다. RET부분에 ret있는 곳의 주소를 넣는다. 그렇다면 그 주소로 eip가 이동그 다음 4 byte AAAA넣으면, AAAA로 eip 이동이 AAAA를 쉘코드 있는 부분으로 넣어주면 되겠다쉘코드가 들어가는 주소를 찾자 2016. 10. 31. succubus 40칸 버퍼 + 4칸 SFP + RET: strcpy주소 +AAAA+(버퍼+48byte의 주소)+(argv[2]의 주소) argv[2]: system함수 주소+BBBB+/bin/sh의 주소 main함수의 ret부분에서 strncpy가 실행되는데,그 인자는 버퍼+48byte의 주소와 argv[2]의 주소이다버퍼+48byte에 argv[2]가 들어가고 AAAA가 그 부분이다.AAAA는 strcpy의 ret부분이므로,이때 system함수가 실행되는 것이다. AAAA의 주소: 0xbffffb00argv[2]의 주소: 0xbffffc8e 2016. 10. 31. PLT와 GOT PLTProcedure Linkage Table외부 프로시저를 연결해주는 테이블.PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. GOTGlobal Offset TablePLT가 참조하는 테이블. 프로시저들의 주소가 들어 있다. 함수를 호출하면(PLT를 호출하면)GOT로 점프하는 데GOT에는 함수의 실제 주소가 쓰여 있다.첫번째 호출이라면 GOT는 함수의 주소를 가지고 있지 않고,어떤 과정을 거쳐 주소를 알아 낸다.두번째 호출부터는 첫번째 호출 때 알아낸 주소로 바로 점프한다. PLT와 GOT를 왜 사용하는지 알기 위해서는 먼저 Linker를 알아야 한다.어떤 코드를 작성한다고 생각하자.소스 안에는 printf함수를 호출하는 코드가 있고,include한 헤더파일에는 printf 선.. 2016. 10. 31. 이전 1 ··· 35 36 37 38 39 40 41 ··· 49 다음