드림핵에 비기너 과정이 새로 생겼길래 구경하다가 이름부터 귀여운 baby linux 문제가 있길래 풀어보았다.그냥 리눅스 쉘의 기능을 하는 웹 서비스에서 flag.txt 찾으면 되는 문제 ㅎㅎ 사이트에 들어가보면 위와 같이 명령어를 입력하는 부분과 출력 칸이 나온다. ls 를 입력해보면 매우 친절하게 hint.txt 파일이 있음 ㅎ flag 파일의 경로를 알려주고 있으니 저기로 가서 cat으로 확인하면 되겠다. 그런데 해당 경로의 flag.txt를 입력하니까 No! 문구가 뜨면서 막힌다.이런 문구가 뜬다는건 일단 이게 flag 파일은 맞다는 소리인데 그냥 코드에서 필터링 하는 것 같으므로 코드를 확인해보자. #!/usr/bin/env python3import subprocessfrom flask i..
전체 글
cron 시스템은 crontab에 기재된 정보대로 특정 시간에 지정된 명령을 수행하는 명령 스케줄링 시스템이다! crontab 파일은 다음과 같이 7개의 필드로 구성되어있다.* * * * * [사용자] 명령분(0~59) 시간(0~23) 일(1~31) 월(1~12) 요일(0~7) 관련 옵션crontab−l[사용자]사용자의등록된crontab파일리스트를보여준다. crontab -e [사용자]사용자의 등록된 crontab 파일을 수정 혹은 생성한다. (vi와 같은 에디터 화면 등장)$ crontab -r [사용자]사용자의 등록된 crontab 파일을 삭제한다. 실제 예시 temp.cron이라는 파일을 만들어서 cronta..
서버의 네트워크 공격 표면 (attack surface)공격 표면 : 해커가 네트워크 또는 민감한 데이터에 무단으로 access 하거나, 사이버 공격을 수행하는 데 사용할 수 있는 취약성, 경로 또는 방법(공격 벡터라고도 함)의 총합1) 물리적으로 (USB) 2) 지근거리로부터(wifi, bluetooth) 3) 원거리에서(TCP/IP) 닿을 수 있음특히 공격자인 원격 client는 server의 IP주소, TCP 포트를 지정하는 것만으로 원격 프로세스에 접근 가능! Attack Surface Management (ASM)- 조직의 공격 표면을 구성하는 사이버 보안 취약점 및 잠재적 공격 벡터를 지속적으로 발견, 분석, 우선순위 지정, 수정 및 모니터링을 수행하는 일련의 과정- 방어자의 관점이 아닌 전..
SSH 클라이언트 사용법$ ssh username@hostname -p port command_line 여기서 username@ 과 -p port, command_line은 생략 가능! username을 명시하지 않을 시, windows/macOS/Linux 클라이언트의 username이 적용된다.-p는 포트번호를 지정하는 옵션으로, 지정하지 않을 시 기본으로 22번이 할당된다. (well-known port number)command_line을 명시하지 않으면 쉘을 사용할 것임을 암시하게 된다. # 예시ssh admin@abcde.net -p 10022 touch /tmp/i_am_alive 위 명령어는 abcde.net에 존재하는 admin 계정으로 로그인한 것이다.TCP port 10022를 lis..
Q. 어떤 웹 서버에 공개된 프로그램 assignment는 buffer overflow 공격에 취약한 것으로 알려져 있다.해당 프로그램을 다운로드 후 분석하여 print_password() 함수를 호출하고 비밀번호를 획득하라! 일단 해당 프로그램을 다운로드 후 다음과 같이 실행해보았다. A를 5번 입력하니 위와 같이 그대로 입력값을 출력해주는 프로그램인 것 같은데,이번엔 A를 많이 입력하니까 위와 같이 core dumped가 나오면서 버퍼 오버플로우가 발생한 것을 볼 수 있다.참고로 BOF 취약점을 분석할 때 주요 관심사는 "버퍼의 크기"와 "외부 입력"이다. 이제 gdb를 통해 어셈블리 코드를 확인해보도록 하자. 코드 분석 우선 목표로 하는 print_password 함수의 시작 주소값을 확보해놓음시작..
다음 C프로그램은 그냥 stdin으로 입력된 값을 stdout으로 출력하는 간단한 echo 프로그램이다.그러나 이 프로그램에는 버퍼 오버플로우를 일으킬 수 있는 취약점이 존재한다. 코드를 수정하지 않고 해당 파일을 컴파일한 프로그램을 실행해서 do_something() 함수를 호출하는 것이 목표! #include #include #include void do_something(){ setreuid(0, 0); system("whoami"); printf("Congratulation!\n");}int main(){ int tmp = 0xFFFFFFFF; char buffer[20] = "AAAABBBBCCCCDDDDEEE"; fgets(buffer, 80, stdin); fputs(buffer, stdou..