2015/10

    LOB 페도라 FC3 dark_eyes -> hell_fire

    ※ 소스를 보면 fgets로 temp에 입력받은후 sfp를 세이브하고 temp에 입력받은값을 버퍼에 복사한다음에 세이브해놨던 sfp를 복구시킨다. 푸는 방법은 system 함수내에 do_system 함수가 있고 그안에 execve 로 쉘을 실행시키는 부분을 이용해서 풀수있다, system 함수안을 보면 do_system 함수가 있고 do_system 함수 안을 보면 execve 함수가 있다. RET을 execve 함수의 인자를 받기 시작하는 do_system+1124로 돌리면된다. 페이로드: 버퍼268+ret(do_system+1124) 비밀번호는 sign me up 이다.

    LOB 페도라 FC3 iron_golem -> dark_eyes

    소스를 보면 sfp를 세이브했다가 버퍼를 복사후 다시 복구시킨다. sfp를 복구시키기 때문에 fake ebp같은 ebp조작은 불가능하다. execve 함수를 이용해서 Ret sleding 기법으로 풀어보겠다. Ret 주소는 0x080484b9 이다. execve 함수의 주소는 0x7a5490 이다. 0x80484b9 를 자세히 보면 ASLR이 적용되어 있기 때문에 랜덤하게 바뀌는 스택이 있다. 안변하는 스택중에 0x0070eab6을 자세히 보겠다. 값이 별로다.다음에 있는 0x0083eff4를 보면 그 다음이 NULL이어서 적당해보인다. (NULL로 함수 인자구분) 쉘을 띄우는 파일을 작성해주고 심볼링링크를 \x3c\ed\83 으로 걸어준다. 페이로드: 버퍼[280] + ret*3 + &execve 비밀..

    LOB 페도라 FC3 gate -> iron_golem

    FC3는 Redhat 9.0과 다르게 여러가지 보호기법들이 추가되었다.1. Exec-Shieled : 스택에 있는 코드 실행 불가2. ASLR : 랜덤 스택3. Ascill Armor : 연속적인 함수 호출 불가 4. Stack Dummy : 스택 사이에 더미를 넣음 RTL 과 fake ebp를 이용해서 풀수있다.RTL을 이용해 execl 함수로 쉘을 띄워보겠다. execl (실행할 파일 , 인자1, 인자2, ..., NULL);execl은 마지막 인자가 NULL이 와야한다. 이부분은 got를 이용할것이다.objdump에 -h 옵션을 줘서 확인하도록 하겠다. got의 주소는 0x8049618이다gdb로 더 자세히 확인해보겠다. 첫번째 인자가 0x8049618이라 할때 첫번째인자가 0x804954c가되고 ..

    PLT,GOT

    PLT(Procedure Linkage Table) PLT는 일종의 실제 호출 코드를 담고 있는 테이블로써 이 내용 참조를 통해 _dl_runtime_resolve가 수행되고, 실제 시스템 라이브러리 호출이 이루어지게 됩니다.. GOT(Global Offset Table) GOT는 PLT가 참조하는 테이블로써 프로시져들의 주소를 가지고 있습니다. PLT가 어떤 외부 프로시져를 호출할 때 이 GOT를 참조해서 해당 주소로 점프하게 됩니다. - printf 함수 호출이 처음일 때[printf 함수 호출]--->[PLT로 이동]--->[GOT 참조]--->[다시PLT로 이동]--->[_dl_runtime_resolve]--->[GOT 저장 후, 실제 함수 주소로 점프] - printf 함수 호출이 처음이 아닐..

    SSA 1주차

    범용 레지스터는 계산, 메모리 어드레스 지정, 임시저장공간 등의 목적으로 사용한다x86-64 프로세서의 범용 레지스터AX : 산술 연산을 수행할때 누산기로 사용한다BX : 데이터의 어드레스를 지정할때 데이터 포인터로 사용CX : 루프 또는 문자열의 카운터로 사용DX: I/O 관련 어드레스를 지정할때 사용, 산술연산을 수행할때 보조 레지스터로 사용SI : 문자열에 관련된 작업을 수행할때 원본 문자열의 인덱스로 사용DI : 문자열에 관련된 작업을 수핼할때 목적지 문자열의 인덱스로 사용SP: 스택의 포인터로 사용BP: 스택의 데이터에 접근할때 데이터의 포인터로 사용R8 ~ R15: x86-64 프로세서에서 추가된 범용 레지스터로 다양한 용도로 사용가능 // 16비트일때 접두사 X 32비트일때 E 64비트일때 ..

    HTML 강좌 -3. 폼

    ※ 게시판이나 글에 대한 입력 양식을 지정 form name속성: form 이름을 지정method 속성: method 방식을 지정action 속성: 입력값을 어디로 전달할지 지정 ※ input 태그type 속성: 입력필드의 타입을 지정name 속성: 입력값이 들어갈 변수명

    HTML 강좌 -2. 여러가지 태그

    태그: 문단 지정EX) 네이버 태그: 줄넘김 c언어에서의 \n EX) 네이버 다음 네이트 출력결과: 네이버 다음 네이트 태그: 링크 생성※ 속성 href: 태그는 기본적으로 href 속성을 가짐 EX) 네이버 target: 링크걸린 페이지를 여는 방식을 지정EX) 네이버속성값을 _blank.로 지정하면 새창으로 열림 title링크의 이름을 지정함 EX) 네이버.링크에 마우스를 갖다대면 이름이 뜸

    HTML 강좌 -1. HTML의 구성

    // 문서의 DOCTYPE을 정해준다 ※ 시작태그( ) 로 시작하고 끝태그( ) 로 닫는다. // HTML 시작 // 내용이 들어감