System 43

[LOB_4]goblin

goblin // hackers proof 소스파일을 확인해 어떻게 구성되어있는지 확인해보았다.여기서 프로세스안 스택에서 젤 주소가 높은위치에 환경변수들이 있는데 거기를 가리키는게 environ (환경변수에 대한 포인터) egghunter 로 인해 NULL 값이 나올 때 까지 환경변수에 0을 덮어 씌우니 환경변수는 쓸수없다.그리고 2번째 인자값의 48번째에는 \xbf 가 나와야 프로그램이 종류가 안됨.가용한 부분 esp-=44를 해주었다. i는 우리가 사용할 버퍼가 아니니 40을 기억.환경변수를 이용하지 않으니 ret에 쉘코드를 가리키는 주소를 넣어준다.그럴러면 확인을 해야 하므로 코어덤프를 해줘야한다. tmp 디텍토리에 사본을 생성!./orc `python -c 'print "\x90"*15+"\x31..

System/LOB 2019.07.25

[LOB_3]cobolt

cobolt // hacking exposed 먼저 소스파일을 확인해 어떻게 구성되어있는지 확인해준다.우선 gets함수가 보인다. 알아보니 gets함수는 버퍼크기 상관하지 않고 입력을 받는다 그럼 이 취약점을 이용해 문제를 해결해야한다.그리고 전 문제와 차이점은 main은 인자를 받지않고 gets에도 인자를 받지 않는다는 점이다. 더미값이 없이 buffer의 크기는 16바이트 이다. buffer, sfp 위 ret의 위치를 파악할수있다. 버퍼오버플로우의 여러가지 방식중 환경변수를 이용하는 방법을 선택 “HA”라는 환경변수를 이용할것이기에 환경변수를 가져오는 getenv 함수를 이용해 “crush.c”파일을 생성하고 컴파일 해준다. export 를 이용하여 환경변수 생성해준다. 메모리주소를 예측을 한다고 ..

System/LOB 2019.07.25

[LOB_2]gremlin

gremlin // hello bof world 소스파일을 확인해 어떻게 구성되어있는지 확인해준다. 힌트가 되는 문자 자료형 배열 buffer 의 크기가 16인 것을 확인해 볼수 있다. 다음으로 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴본다. 저는 인텔 문법이 편하므로 인텔 문법으로 보기위해 gdb 에서 set disassembly-flavor intel 명령어를 이용해 intel 문법으로 본다. (이젠 외워야지) 여기서 확인해 보아야할 곳은 스택에 esp 레지스터가 가리키는 곳을 확인해 준다. 변수의 크기를 할당해주기 위해 sub op 코드를 이용하여 esp -= 16을 해준 것을 확인해 볼수 있다. 그리고 아까 c 소스파일에서 조건문이 있었는데 어셈블리 코드..

System/LOB 2019.07.25

[LOB_1]gate

gate // gate 우선 어떤 파일이 있나 확인을 해준다. 컴파일된 gremlin, 그리고 gremlin.c 소스파일이 있다. 소스파일을 확인해 어떻게 구성되어있는지 확인해준다. 힌트가 되는 문자 자료형 배열 buffer 의 크기가 256인 것을 확인해 볼수 있다. 다음으로 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴본다. 저는 인텔 문법이 편하므로 인텔 문법으로 보기위해 gdb 에서 set disassembly-flavor intel 명령어를 이용해 intel 문법으로 본다. 여기서 확인해 보아야할 곳은 스택에 esp 레지스터가 가리키는 곳을 확인해 준다. 변수의 크기를 할당해주기 위해 sub op 코드를 이용하여 esp -= 256을 해준 것을 확인해 볼수..

System/LOB 2019.07.25

[해커스쿨]trainer10

이번 시간에는 Local 해킹시 핵심이 되는 SetUID에 대하여 알아본다. Local 해킹? 해킹에는 두가지가 있다. 하나는 Remote 해킹, 이것은 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는 것을 말한다. 다른 하나가 Local해킹, 이것은 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한(root)를 얻고자 시도하는 것을 말한다. Remote 해킹 방법엔 여러가지 있는데 무작위로 아이디와 비밀번호를 입력하여 접속하는 방법에서 부터, 데몬의 취약점을 공략하여 접속하는 방법. 심지어 게시판이나 방명록을 이용하여 접속하는 방법까지. 방법은 수십가지가 넘는다고 한다. 하지만 우리에게 정작 중요한건, Remote 해킹이 아닌 Local 해킹이라고..

System/FTZ 2019.07.20

[해커스쿨]trainer9

이건 시간에는 리눅스의 권한에 대해서 알아본다! 이 권한에 관한 개념은 해킹에 있어서 가장 핵심적인 부분이다고 한다. F.T.Z의 level별 해킹에서도 이것을 알아야만 문제를 풀수있다. 리눅스는 윈도우와 달리 한 서버에 여러 사용자가 접속하여 사용하게 된다. 근데 나만 보고 싶은 자료들이 있을텐데 어떠한 방법으로 다른 사람이 나의 파일에 접근하지 못하도록 막는가? 그때 나오는 개념이 바로 권한(Permission)이라는 것. ls -al 명령을 사용하여 파일들의 권한에 대한 정보를 출력 리눅스에는 4가지 종류의 사용자가 있다. user, group, other, root user : 이것은 자신을 의미 group : 모든 유저는 하나 이상의 그룹에 속하는데 임의로 이 그룹을 변경하지 않는 한 모든 유저..

System/FTZ 2019.07.20

[해커스쿨]trainer8

요번시간엔! 새로운 파일을 만들고, 컴파일하고, 그것을 실행시키는 방법을 배워본다! 위의 과정들은 실제로 해킹을 할 때 빠짐없이 사용되는 방법이니 잘 익혀달라고한다 ㅎ 우리가 만드는 파일에는 크게 두가지 종류가 있다. 첫째, 일반 텍스트 파일. 이것은 말 그대로 글자로만 이루어진 파일로서, 예를들어 "README.TXT"가 그런것 이런 일반 텍스트 파일은 cat 명령을 사용하여 내용을 출력한다고 지난번에 배웠다. 둘째, 프로그램 소스 파일. 프로그램 소스란 여러분이 컴퓨터 언어로 입력한 파일을 말하며, 이것 역시 텍스트 파일이긴 하지만 cat을 사용하여 내용을 보는것이 아니고 "컴파일"이란 과정을 거쳐 실행이 가능하도록 만든 후 사용한다. 텍스트 파일 생성법 1. 쉘 프롬프트 상태에서, cat > 파일이..

System/FTZ 2019.07.20

[해커스쿨]trainer6

이번 시간엔 '패스워드 파일 분석 방법'을 배워본다고 한다. 패스워드 파일이란 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일을 말한다고 한다. 그 사용자는 어떤 아이디, 어떤 암호를 이용하여 로그인 하는지, 어떤 그룹에 속해 있는지, 이름은 무엇인지 등등.. root : x : 0 : 0 : Admin : /root : /bin/bash 각각 7개의 필드가 무엇을 의미할까? 첫번째 필드 -> 서버에 로그인할 때 사용되는 아이디(계정) 두번째 필드 -> 패스워드가 적혀있는 부분이었다고 한다. 리눅스버전5.0 까지는 암호화된 문자열이 들어가있었지만 이마저 위험해져 x 라고 표기해 놓고 사용자들의 패스워드만 모아서 새로운 파일을 만들었는데 그것은 바로 /etc/shadow/ 라는 파일 요기서 알..

System/FTZ 2019.07.20

[해커스쿨]trainer5

해킹에서 가장 중요한 것은 실력, 운, 경험, .. 등등 여러가지 있겠지만 아무래도 가장 중요한 것은 '정보'라고 한다. '해킹의 첫 단계는 정보수집이다' 그리하여 이번 시간에는 해킹을 시도 하려는 서버의 정보를 수집하는 방법을 배워본다고 한다. 정보에는 여러가지가 있는데 서버에 어떤 프로그램들이 설치되어 있는지, 서버 주인은 지금 무엇을 하고 있는지, 어떤 OS를 사용하여 서버를 만든것인지 등등 --> 우리가 알아낼 수 있는 모든 것이 해킹을 하기위한 정보임 일단 자신이 누구인가인 명령어 whoami 자신이 누군가 id cat /etc/passwd -> 여기서 알수 있는 정보는 가장 왼쪽의 단어가 사용자들 아이디이다. 서버의 커널정보를 알아볼텐데 커널이란?????? 커널은 리눅스의 심장부 역할을 하는 ..

System/FTZ 2019.07.20

[해커스쿨]trainer4

디텍토리에 대해 공부 리눅스에서 중요한 역할을 하는 파일들에 대한 궁금증을 풀어주겠다고 한다. 쳤던 명령어 cd / ls -al bin : 이곳에는 가장 필수적인 리눅스 실행 파일이 들어가 있습니다. ls, rm 모두 이곳에 들어가 있음 boot : 리눅스 부팅 관련 파일들과, 리눅스의 심장인 커널이란것이 들어있습니다. dev : 이곳은 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장되어 있는 곳 입니다. etc : 많은 중요한 파일들이 이곳에 들어가 있습니다. 패스워드 파일, 쉐도우파일. 그 외 대부분의 리눅스 설정 파일 등등. home : 일반 사용자들의 디렉토리가 들어가는 곳 입니다. guest와 trainer1~10, level1~10 모두 이 디렉토리안에 속해 있습니다. lib : 많..

System/FTZ 2019.07.20