
1. docker build -t (도커 이미지 이름 지정). 2. docker run -it (image ID) /bin/bash 3. docker ps 4. docker exec -it (컨테이너ID) /bin/bash 문제 파일을 다운로드하면 Dockerfile이 있다. Dockerfile을 터미널로 연다. 터미널에 첫 번째 코드를 입력 후 이미지가 빌드되는 화면이 보인다. 그 후 docker images 로 도커에 활성화된 도커 이미지들을 확인하고 컨테이너를 실행시키기 위해 두 번째 코드를 입력한다. 만들어진 컨테이너를 확인하기 위해 세 번째 코드를 입력한다. 마지막으로 세 번째 코드 실행 결과에 있는 컨테이너ID를 네 번째 코드에 넣어 실행한다. 그리하면 컨테이너에 접속이 되고 ls로 디렉터리의..

문제에 들어가면 별 다른 기능 없이 @이미지1 처럼 memo를 작성할 수 있는 화면이 뜬다. 작성한 메모를 저장하면 @이미지2 처럼 저장한 메모를 확인할 수 있다. 웹 페이지 내에서 딱히 찾을게 없으니 소스코드를 보자 @이미지 3을 보면 Post 요청으로 받은 페이로드를 이용하여 파일을 만들고 저장한다라는 것을 알 수 있다. @이미지 4에는 도트(..)과 슬래시(/)가 필터링 되어있는 것을 알 수 있다. 웹의 동작 방식은 {UPLOAD_DIR}/{filename}으로 파일을 open하여 내용을 보여준다. 이를 통해 name이라는 매개변수를 공격해야한다는 것을 알 수 있다. 저장한 메모를 들어가면 name=(자신이 저장한 메모 이름)이 보이고 = 뒤에 공격을 해야한다. 먼저../flag를 입력하면 exis..

웹 페이지에 들어가면 uid와 upw를 입력할 수 있는 페이지가 나온다. uid와 upw에 아무 값이나 입력했더니 아무런 반응이 없다. 문제 이름이 baby-union이니 sql union을 생각했다. 데이터베이스 버전 ' union select 1,2,3,version()# res : 10.3.39-MariaDB-0+deb10u1 데이터베이스 유저 ' union select 1,2,3,user()# res : dbuser@localhost 데이터베이스 이름 ‘ union select 1,2,3,datebase()# res : secret_db 데이터베이스 테이블 ' union select 1,2,3,table_name from information_schema.tables# res : users, on..

SQL injection은 데이터베이스(DB)에 쿼리문을 넣어 공격하는 기법이다. 여기서 쿼리문이란 데이터베이스에 주문하는 명령이라고 생각하면 다. SQL injection의 기본 구문은 다음과 같다. 1. SELECT user FROM user_table WHERE id='admin' AND password= ' OR '1' = '1' 위 구문을 해석하자면 유저 테이블에서 id는 admin, password는' OR '1' = '1로 로그인을 시도한다라는 뜻이다. 패스워드에서 OR은 앞 뒤에 무엇이든 참이라면 패스워드로 인정해 준다. 따라서 OR의 앞에 있는 '(세미콜론)은 공백의 문자열로 칭하고 뒤에 있는 1=1은 참이기 때문에 패스워드로 인정해준다. 1-2. id= admin' or 1=1 -- -..