본문 바로가기

분류 전체보기267

[Bandit] Level 8 → Level 9 문제를 읽어보니 비밀번호는 data.txt라는 파일에 있으며 딱 한번 나타나는 라인에 존재한다고 한다. 일단 이전 단계에서 얻은 비밀번호로 접속해준다. ls 명령어로 파일과 디렉터리 목록을 확인한 후에 data.txt 파일을 cat 명령어로 읽어보았다. 위의 화면처럼 아주 복잡하고 긴 내용을 갖고 있음을 알 수 있다. 문제의 힌트로 돌아가서 명령어를 참고해보니 sort라는 명령어를 쓰기에 적합할 것 같았다. $ sort [옵션] [파일] : 파일의 내용을 정렬하거나 정렬된 파일의 내용을 병합할 때 사용 # -r, --reverse : 역순으로 정렬한다. # -k, --key=POS1 : 정해진 필드를 기준으로 정렬한다. # -u, --unique : 정렬 후 중복된 내용을 제거한다. # -t, --fie.. 2022. 1. 5.
[Bandit] Level 7 → Level 8 문제를 읽어보니 비밀번호는 data.txt 파일에 있는데 millionth라는 단어 옆에 존재한다고 한다. 일단 이전 단계에서 얻은 비밀번호로 접속해준다. ls 명령어로 현재 위치에 존재하는 파일과 디렉터리를 확인하니 data.txt가 바로 있음을 확인할 수 있었다. cat 명령어로 data.txt 파일을 읽어보니 아주 긴 내용이 출력되었다. 하나하나 찾아보기엔 시간도 오래 걸리기 때문에 문제 힌트에 있는 명령어들을 참고했다. $ grep [옵션] [표현식] [파일명] : 파일 속 특정 문자열을 찾는다. # -c : 문자와 일치하는 줄의 수 출력 # -h : 여러 파일에서 문자열을 찾을 때, 파일이름이 붙는것을 방지 # -i : 대소문자를 구분하지 않는다. # -n : 줄의 번호와 내용을 같이 출력 # .. 2022. 1. 5.
[Bandit] Level 6 → Level 7 문제를 읽어보니 비밀번호가 담긴 파일의 속성이 나와있다. user가 bandit7이고 group이 bandit6이며 33byte 크기를 가진 파일이라고 한다. 일단 이전 단계에서 얻은 비밀번호로 접속해준다. 중간과정은 캡쳐가 날아가서 없다. 문제에서 원하는 파일을 찾기 위해 find 명령어에서 user는 bandit7이고 group은 bandit6이며 크기는 33 btype인 파일을 찾도록 검색 조건을 설정해주었다. 검색을 해보니 조건을 만족하는 파일이 주르륵 출력됐다. 하지만 거의 대부분이 Permission denied이라고 뜨고 있다. 쭉 내려가면서 살펴보니 유일하게 접근할 수 있는 파일을 하나 발견할 수 있었다. 해당 파일을 cat 명령어를 이용하여 읽어보니 비밀번호를 구할 수 있었다. 2022. 1. 5.
[Bandit] Level 5 → Level 6 문제를 읽어보니 inhere 디렉터리 안 어딘가에 있는 파일에서 비밀번호를 찾아내라고 한다. 이 파일은 사람이 읽을 수 있고, 1033byte이며 실행할 수 없는 파일임을 알려주었다. 일단 이전 단계에서 얻은 비밀번호로 접속해준다. ls 명령어로 inhere 디렉터리를 발견한 뒤 inhere 디렉터리 안으로 들어가서 다시 ls -al 명령어로 모든 파일이나 디렉터리를 출력하도록 했다. 출력하니 여러개의 디렉터리가 있음을 파악할 수 있었다. 아직은 어떻게 할지 잘 모르겠어서 아무 디렉터리나 들어가서 파일들을 살펴보았다. 하지만 파일 개수도 그렇지만 디렉터리 개수도 너무 많아서 일일이 확인하기엔 시간이 너무 오래 걸릴 듯 싶었다. 다른 손쉬운 방법이 없나 생각해보다가 힌트를 참고했다. 사용하기로 한 건 fi.. 2022. 1. 5.
[BOJ] Bronze Ⅴ- Day 10 사용 언어 : Python, C(차후 추가 예정) 푼 문제 : #15740, #15894, #15962, #15964, #16170 #15740 [Python] A, B = map(int, input().split()) print(A + B) [C] #15894 [Python] num = int(input()) col = 2 * num #세로 row = 1 + (1 * (num-1)) + num #가로 print(col + row) [C] #15962 [Python] print("파이팅!!") [C] #15964 [Python] A, B = map(int, input().split()) print((A + B) * (A - B)) [C] #16170 [Python] import datetime now =.. 2022. 1. 5.
[생활코딩] WEB2-PHP 정리 3강 ~ 27강 1. PHP - php.ini : 이 파일의 설정을 바꾸는 것을 통해 php의 기본 동작 방법을 바꿀 수 있음 웹 브라우저에 html 파일 요청 -> 웹 서버가 확장자를 확인하여 html임을 확인 -> htdocs 디렉터리에서 html 파일을 읽어서 웹 브라우저에 전송 -> 웹 브라우저는 그 코드 해석하고 화면에 표시 웹 브라우저에 php 파일 요청 -> 웹 서버에서 php는 자신의 소관이 아님을 확인 -> php라는 프로그램에 php 파일 위임 -> htdocs 디렉터리 안에 있는 php 파일을 열어서 php 문법에 따라 html 파일을 만들어냄 -> 만들어진 html 파일을 웹서버가 웹 브라우저에 전달 2. 데이터 타입 1) 숫자 - integer (정수) - float (부동소수점).. 2022. 1. 3.
[1주차] XSS 공부 1. XSS 공격 - Cross-site Scripting의 약자 - 공격자가 공격하려는 사이트에 스크립트를 삽입하여 다른 사용자가 이를 실행하게끔 하는 기법 - 대표적 스크립트 언어 : 자바스크립트, VB스크립트 - 공격 당한 사용자는 의도치 않은 행동을 수행하거나 계정 하이재킹, 사용자 설정 변경, 쿠키 훔치기 및 오염, 광고 등을 당함 - 이 취약점은 사용자로부터 입력 받은 값을 제대로 검사하지 않고 그대로 사용할 경우 나타남 - 보통 특수문자나 예약어, 스크립트를 나타내는 문자를 사용함 2. 종류 1) Stored XSS - 공격자가 삽입한 악성 스크립트가 데이터베이스에 저장되고, 저장된 악성 스크립트를 사용자가 조회할 때 발생 - 공격 당한 사용자는 쿠키를 탈취당하거나 다른 사이트로 리다이렉션 .. 2022. 1. 2.
[BOJ] 1주차 - #1157 #1157 [문제] [코드] #include int main() { char word[1000000]; int cnt[27] = {0, }; int max = 0; int index = 0; scanf("%s", word); for (int i = 0; word[i] != '\0'; i++) { if (word[i] >= 'a' && word[i] 2022. 1. 2.
[BOJ] 1주차 - #1330 #1330 [문제] [코드] #include int main() { int A, B; scanf("%d %d", &A, &B); if (A > B) printf(">"); else if (A < B) printf(" 2022. 1. 2.