목록전체 글 (151)
김승현
caas라는 제목의 웹이 있따고 한다. 일단 웹사이트로 가보자. 주소에 /cowsay/{하고싶은말}을 적으면 소가 말을 해준다고 한다. 아무거나 입력해보자. 이렇게 그려진 소가 hi라고 말하게 한다. 문제에 같이 제공된 index.js를 확인해보자. 문제는 이렇게 생겼다. const express = require('express'); const app = express(); const { exec } = require('child_process'); app.use(express.static('public')); app.get('/cowsay/:message', (req, res) => { exec(`/usr/games/cowsay ${req.params.message}`, {timeout: 5000},..
website의 파일들은 /usr/share/nginx/html/에 저장된다고 하고 flag는 flag.txt라고 한다. 근데 절대 파일 경로는 필터링하고 있다는 것 같다. 문제 사이트로 접속해보자. 문제 사이튼 이렇게 생겼고 파일이름을 입력해서 read하는 방식인 것 같다. 위의 파일 이름 the-happy-prince.txt를 입력해보자. 이렇게 read.php로 이동이 되면서 책 내용이 나온다. 아마 flag.txt를 입력해서 얻으면 될 것 같다. 일단 flag.txt를 입력해보자. 위와 같이 현재 경로엔 flag.txt가 존재하지 않는 것 같다. ../를 이용해서 경로를 찾아가면 될 것 같다. 처음에 절대경로가 필터링되었다는 걸 보면 /usr/share/nginx/html/의 경로에서 벗어난 후 ..
파라미터 변조란? 말 그대로 파라미터에 있는 값을 변조하여 의도치 않은 행위를 수행하는 공격. GET메서드의 경우 URL에 파라미터가 그대로 드러나서 변조하기 용의하나, POST나 PUT의의 경우 요청 body에 파라미터가 포함되기 때문에 request와 response를 중간에 수정할 수 있어야 함 -> 이렇게 네트워크를 통해 오가는 request, response 내용을 변조하기 위해 프록시 서버를 이용해야 한다. 프록시 서버란? 클라이언트와 서버가 통신하는 과정 중간에 존재하며 이 통신을 연결해주는 역할의 서버. 클라이언트로부터 요청을 받아 서버에게 전달하고 서버로부터 응답을 받아 클라이언트에게 전달 -> 중간에서 요청, 응답에 대한 확인 및 수정이 가능함 : 변조 가능 프록시 서버를 제공하는 프로..
xss란? cross site scripting의 줄임말로 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것 Cross site scripting인데 xss인 이유 - 웹 프론트엔드에서 디자인을 담당하는 언어가 이미 css라는 이름을 가지고 있기 때문 데이터베이스를 대상으로 한 공격인 sqli와 다르게 사용자들을 대상으로 하는 공격임 xss의 종류 xss에는 크게 Reflected XSS, Stored XSS, DOM Based XSS가 있다. Reflected XSS 반사라는 뜻을 가진 reflected를 사용하는 것처럼 xss공격 구문이 포함된 URI로 사용자가 접근을 해야지만 발생하는 xss..
sql injection이란? 해석하게 되면 sql 삽입이며 sql에 악의적인 쿼리를 삽입하여 실행하게 만드는 것. 이때 악의적인 쿼리를 payload라고 함 데이터베이스를 대상으로 하는 공격이기 때문에 정보에 대한 조회, 수정, 삭제를 할 수 있기 때문에 크리티컬함 sqli가 가능한 이유: 아이디 또는 비밀번호를 ''(작은 따옴표)를 기준으로 범위를 지정해서 문자열을 받는 방식인데, 아이디에 admin' or 1=1 --과 같은 방식으로 싱글쿼터를 사용해서 강제적으로 범위를 닫아서 질의문의 내용을 바꿈 여기서 --는 sql에서 주석을 의미함. -> 따라서 1=1 뒷 부분은 모두 주석처리가 되기 때문에 admin이라는 아이디를 가진 계정에 접근하게 됨 우리가 접속해야 할 아이디가 admin인 것을 아는 ..