본문 바로가기

3. Pwnable (포너블)/2) 개념 정리

[26.05.08]아포 6주차 팀활동

  • 인프런 리눅스 기본 개념 섹션 7&8진행 /인프런 해킹대회 ctf출전을 위한 포너블입문 섹션1,2,3진행

인프런 리눅스 기본 개념 섹션 7&8

다중사용자

=시스템 복잡도 훪씬 증가하게 됨

id=식별하다/내가 누군지 알 수 있는

uid=user id

gid=group id(내가 어디에 속해있는지)

who=현재 이 시스템에 누가 접속해 있는지

k8805라는 사용자도 접속한다는 명령어

->who 실행시 k8805가 추가됨/exit입력시 빠져나오기 가능

리눅스 계열의 두 사용자 종류

super(root) user=권력을 가지고 있는 강력한 사용자 

user=일반 사용자

sudo 명령어=슈퍼 유저만 할 수 있는 일을 입력할 때

그냥일반 사용자는 sudo를 쓸 수없음 권한이 있는 사람만이 실행가능

슈퍼유저

1.root라는 이름을 지님

2.$대신 #을 지님

su=슈퍼유저가 되는 명령어 || a라는사용자에서 b라는 사용자가 되고 싶을 때

su + username=슈퍼유저가 되는 코드

su -root -> 비밀번호 입력->슈퍼유저 상태가 됨 (가급적 일반유저로 활동)

exit=슈퍼유저에서 일반유저로

sudo passed -u root=슈퍼유저 막은 걸 푸는 코드

-u=unlock의 약자

cd/ root=최상위 디렉토리 밑에 있는 root라는 디렉토리:root사용자의 홈 디렉토리

cd/=최상위 디렉토리

<사용자의 추가>

sudo usermod -a -G sudo duru

 

  • sudo : 관리자 권한으로 실행
  • usermod : 사용자 정보를 수정하는 명령어
  • -G sudo : sudo 그룹에 추가
  • -a : 기존 그룹 유지한 채 추가(add)
  • duru : 사용자 이름

=>duru 사용자를 sudo 그룹에 추가해서 관리자 명령을 사용할 수 있게 한다

 

su - duru

 

  • su = 사용자 전환(switch user)
  • - = 해당 사용자의 로그인 환경까지 같이 적용
  • duru = 바꿀 사용자

=>현재 사용자에서 duru 사용자로 로그인 전환

 

 

섹션8

Permission=File&Directory(읽기,쓰기,실행 권한을 지정)

touch=새 파일을 만듦

 

echo=뒤 따라오는 문자를 그대로 화면에 표준 출력

echo ‘hi’ > perm.txt=hi라는 문자가 perm.txt안에 저장하고 출력

사용자가 egoing->k8805로 바뀌었을때 m.txt=egoing의 파일이므로 k8805일때 permission denied가됨,,

-기본적인 파일을 의미

 

->egoing은 읽고 쓰기 권한 있지만 실행권한 x/other은 읽기 권한만 존재 내용쓰기는 불가

perm.txt파일이 egoing임을 의미

<access mode>

rw=owner의 권한

-rw-=group의 권한

r- -=other의 권한

r:read/w:write/x:excute를 의미

읽는다=cat perm.txt에서 파일 내용을 출력 가능

쓴다=내용 변경 가능

chmod=change mode를 의미

 

chmod o-r perm.txt= other부분의 r을 삭제하는 코드

chmod o+r perm.txt=other부분의 r을 다시 넣음

<execute>

 

 user에게 실행권한을 부여 u+x

./hi-machine.sh =파일을 실행시키는 명령어

ohter에게도 실행 권한을 부여->k8805에서도 파일 실행이 가능해짐

<chmod 정리>

-chmod의 기본틀

chmod o+r perm.txt=할 때마다 설정 비효율적임 따라서 아래와 같은 번호 사용

chmod 111 perm.txt=1은 execute only를 의미/따라서 모두 execute권한 부여

chmod 111 perm.txt=0은 none을 의미->other의 execute권한 사라짐

a+w=모두에게 w 부여하는 코드

 


 

인프런 해킹대회 ctf출전을 위한 포너블입문 섹션1,2,3

 

해킹의 목표=하면 안되는 거 하기(권한이 없는 행위를 하는 것)

권한이 없는 행위란?

개발자가 의도하지 않은 프로그램의 동작같은 것

시스템 장악=Shell의 실행을 의미

shell=실행하고 싶은 코드를 실행시켜주는 프로그램

->나의 컴퓨터는 내가 시스템을 장악한 상태/ but 남의 컴퓨터로 넘어가 내 마음대로 앱을 실행:해킹을 의미

시스템:pc 그 자체/시스템을 장악하다=실행하고 싶은 코드를 실행할 수 있다

시스템 해킹(Punable) 의 목표:악의적인 실행흐름을 유도(쉘의 실행) 하는 것이 목표

공격대상 프로그램=반드시 인터넷과 연결되어 있어야함

pwnable=인터넷 어딘가에 위치한 외부(remote환경)에서 내부환경으로 침투

 <CTF Pwanable 유형>

nc=특정 프로그램에 원격접속을 가능하게 해주는 명령어

포너블에서 왜 프로그램 접속이 필요한것인가?

포너블=외부->내부 침투/노출된 포트로 접속가능 프로그램에 접속하여 악의적 실행흐름을 통해 시스템 장악을 하기 때문

 

->시스템을 장악한다=외부에 포트가 열린 프로그램에 접근하여 쉘을 실행시킨다는 것+프로그램의 취약점을 찾아 쉘을 실행

 

<컴퓨터의 구조>

메모리=어떤 일을 해야하는지 저장+일을 꺼내 계산부분에 전달

---컴퓨터 메모리 특징---

실행할 코드가 저장되어있음&순서대로 코드가 실행됨

CPU

=저장부분에 있는 PC(Program Computer)에 쓰인 주소에 있는 프로그램 코드를 가져와서 실행

=핵심:검증없이 실행을 진행함

-------->PC를 조작하는 경우 악의적인 코드를 실행할 수 있음

악의적 프로그램 실행흐름 방법 2가지

1.메모리 영역 어딘가에 실행원하는 코드를 입력

2.PC값을 해당 코드가 있는 주소로 변경