본문 바로가기

분류 전체보기303

백준[자바 java] 17086 : 아기상어 2 https://www.acmicpc.net/problem/17086오래전에 풀었던 문제인데 쉬운 문제부터 다시 감잡으려고 풀었다. bfs로 각 격자 중 아기상어로부터 가장 멀리 떨어져있는 격자의 거리를 구하는 문제이다. 이 문제에서는 위, 아래, 양 옆, 대각선 총 8개의 격자를 탐색해야했다.이를 하나하나 코드화하기는 지저분하고 힘드니까 dx,dy테크닉을 사용하였다. 또한 한번 방문한 격자는 다시 방문하는 것은 메모리, 시간 낭비이므로 vis배열을 이용하여 중복탐지를 하였다. bfs의 사이클을 탐지하기 위해서 x,y값이 -1인 값을 매 사이클이 시작할 때마다 넣었다.만약 방금 poll 한 값이 -1이라면 이건 사이클이 한번 돌았다는 이야기이므로, 거리를 하나 더해주고, 새로운 (-1,-1)객체를 큐에 넣.. 2025. 6. 24.
[웹보안] SSRF SSRFssrf는 서버가 외부에 요청을 보내도록 승인하는 것이다.이 때 내부에서만 접근 가능한 서비스에 접근하거나서버가 공격자가 지정한 외부 임의 시스템에 접근하거나공격자가 민감한 데이터를 훔치거나명령어 실행까지 가능하다 → shellshock도 가능여기서 정상 명령은 위에 부분이다.근데 공격코드는 재고확인을 서버의 로컬에서 하도록하였다.이는 서버의 로컬에 간접적으로 접근했음을 의미한다이 때 서버는 이를 신뢰된 요청이라고 착각한다.이 문제는 서버 내부 요청에 대한 필터링은 없고 서버 내부 요청은 신뢰할만하다고 생각해서 생겼다.관리자용 인터페이스와 사용자용 포트를 분리했지만 내부 포트에 접근이 가능해졌다.방어기법 우회(Bypassing ssrf defenses)127.0.0.1로 가는 걸 필터링해도 다른 .. 2025. 6. 2.
[웹보안] ClickJacking Attack ClickJacking AttackIframe웹페이지 안에 다른 사이트를 삽입하는 것이다.이런 식으로 위에 올라오는 사이트의 투명도도 조절 가능하다이런식으로 투명도를 0으로 하면 아예 안보여서 사용자가 의도하지 않은 버튼을 누르게할수도 있다.CounterMeasure(방지하는법)iframe으로 들어가는 것을 방지해야한다.이 코드는 만약 실제 페이지가 현재 나의 페이지와 다르다면 자신의 페이지를 새 창으로 열라는 뜻이다.이런식으로 방지할수도 있다.이러한 코드로 내가 iframe안이라는 것을 감지할 수 있다.또한 이러한 코드로 해당 페이지를 빠져나갈수도 있다.하지만 우회하는 방법이 있다.double Framing프레임 안에 프레임 씌움 → top location 볼 수 없다. → 우회 가능Abusing on.. 2025. 6. 2.
[웹보안] Enviroment Variables & Attacks Enviroment Variables & AttacksEnviroment Variables환경변수운영체제가 실행중인 프로세스의 환경을 정의하는 동적 변수의 집합예를들어 PATH 변수에서 쉘이 명확한 경로를 받지 못했을 때 여기서 찾는다.환경변수에 접근하는 법이렇게 메인문에서 접근도 가능하지만전역변수로 선언하는 것이 더 권장된다.프로세스가 환경변수 얻는 법프로세스는 두가지 방법으로 얻을 수 있다fork()위 명령어를 실행하면 새로운 자식프로세스가 생성된다.이 때 부모의 환경변수를 상속받는다.execve()이건 현재 실행중인 프로세스를 완전히 덮어쓰기 하는 것이다.이 때 기존 환경변수..는 다 날아가고 새롭게 들어온다.이 때 envp[]부분에 환경변수가 들어오게 된다./user/bin/env는 현재 환경변수.. 2025. 6. 2.
[웹보안] SQL Injection Attack SQL Injection Attacksql 로그인-p 다음에 비번 입력DB 만들기show database 하면 원래 데이터베이스 보여야함없으니까 create database로 만든다.그 다음 해당 데이터베이스에 접속하고, 테이블을 만든다.DESCRIBE문으로 테이블의 기본 정보를 확인할 수 있다.INSERT INTO 문으로 요소들을 넣을 수 있따.이떄 id는 자동생성되므로 우리가 따로 만질 필요는 없다.select 문으로 테이블 요소들을 확인할 수 있다.where 절where절에 있는 문이 true인 요소들만 반영한다.and나 or을 쓸 수 있다위와 같이 항상 참인 것을 넣을 경우, 모든 요소가 해당되어 출력되게 된다.위의 where 절을 활용해서 원하는 요소의 정보를 수정할수도 있다.한 줄을 주석처리하.. 2025. 6. 2.
[프로그래머스 JAVA] 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr알고리즘 고득점 키트 풀고있는데어떤 자료구조를 사용해야하는지 나와있으니까 자꾸 생각을 자유롭게 못해서 더 어려운 길을 가는 것 같다.. progresses는 현재 진행률을 의미하고, speeds는 하루에 진행 가능한 양을 의미한다.뒷 순서에 있는 작업이 끝났더라도 앞 순서의 작업이 끝나지 않았으면 배포할 수 없다. 이 문제는 각 배포마다 몇개의 작업이 배포되는지를 배열로 리턴하는 문제이다. 나는 progresses와 speeds를 사용하여 각 작.. 2025. 5. 15.