본문 바로가기
728x90

Web88

[개념정리] Click jacking Click jacking 이란? Click jacking은 웹 보안 공격 중 하나로, 공격자가 웹 페이지를 조작하여 사용자가 의도하지 않은 동작을 수행하도록 속이는 공격 형태이다. Click jacking은 웹 애플리케이션의 사용자 인터페이스(UI)를 가려서 숨긴 상태로, 사용자가 보고 있는 것과는 다른 UI 요소나 링크를 클릭하게 유도하는 형태이다. 즉, 눈 속임을 통한 공격방법이라 할 수 있다. 클릭재킹 공격의 주요 특징과 동작 방식은 다음과 같다. UI 가려놓기: 공격자는 투명한 레이어나 숨겨진 프레임(iframe) 등을 사용하여 원래 웹 페이지를 가려놓는다. 유도 및 속임: 사용자는 보이는 부분을 클릭하려고 하지만 실제로는 가려진 페이지의 링크나 버튼을 클릭하게 된다. 사용자는 이를 자각하지 못하.. 2024. 1. 5.
[개념정리] SameSite 쿠키에 별도로 설정을 가하지 않는다면, 크롬을 제외한 브라우저들은 모든 HTTP 요청에 대해서 쿠키를 전송하게 된다. 그 요청에는 HTML 문서 요청, HTML 문서에 포함된 이미지 요청, XHR 혹은 Form을 이용한 HTTP 요청등 모든 요청이 포함된다. CSRF(Cross Site Request Forgery)는 이 문제를 노린 공격이다. 공격대상 사이트는 쿠키로 사용자 인증을 수행함. 피해자는 공격 대상 사이트에 이미 로그인 되어있어서 브라우저에 쿠키가 있는 상태. 공격자는 피해자에게 그럴듯한 사이트 링크를 전송하고 누르게 함. (공격대상 사이트와 다른 도메인) 링크를 누르면 HTML 문서가 열리는데, 이 문서는 공격 대상 사이트에 HTTP 요청을 보냄. 이 요청에는 쿠키가 포함(서드 파티 쿠키).. 2023. 10. 27.
[개념정리] XSS XSS란? SQL injection, XXE, CSRF등 대표적인 웹해킹 기법중 하나로 Cross Site Scripting의 약자로 CSS라는 언어가 먼저 사용되고 있어 XSS라고 지어졌다. XSS는 이름 그대로 다른 웹사이트와 정보를 교환하는 식으로 작동한다. 웹 사이트가 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타나며, 대부분 사용자가 글을 쓰고 읽을 수 있는 게시판에 많이 발생하지만, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생한다. 공격에 성공하면 사이트에 접속한 사용자는 악성 스크립트를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등 민감한 정보를 탈취한다. 공격 유형 1. Stored XSS (저장 XSS) Stored XSS은 악.. 2023. 8. 23.
[개념정리] XXE 란? 대표적이 웹 해킹 기법이라 하면 SQL injection, XSS, CSRF, XXE 등등이 있다. 이중 XXE는 무엇일까? XXE는 XML External Entity의 약자이다. 먼저 XXE를 알아보기전에 XML이 무엇인지 알아야 한다. XML이란? XML이란 Extensible Markup Language의 약자로 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장되는 다목적 마크업 언어이다. 마크업 언어(Markup Language)는 양식이 있는 문서의 한 종류이며 그 양식을 태그(좌, 우 부등호 처럼 생긴 꺽쇠 로 구분)등으로 구분하여 문서 정보를 정확하게 전달하기 위한 목적으로 만들어진 문서이다. 예를 들어 우리가 흔히 아는 HTML이 있다. 그러나 XML은 HTML처럼 .. 2023. 8. 11.
Webhacking.kr Challenge old-59 문제 풀이 이번에 풀 문제는 59번! 들어가면 회원가입과 로그인 칸이 있고 id와 phone을 입력하게 되어 있다. 소스코드는 꽤 길긴 하지만 정리하면 POST[lid] = 로그인 id, POST[lphone]= 로그인 phone addslashes함수로 각각 싱글쿼터, 더블쿼터, \, Null 필터링 POST[id] = 회원가입 id, POST[phone]= 회원가입 phone addslashes함수로 각각 싱글쿼터, 더블쿼터, \, Null 필터링 phone 입력 길이 20미만으로 제한 각각 admin 필터링 phone에서 0x, #, hex, char, ascii, ord, select 필터링 마지막으로 lv값이 admin이면 문제가 풀린다. 우선 lv가 무엇인지 모르기 때문에 회원가입 후 로그인을 해보자 임.. 2023. 7. 13.
Webhacking.kr Challenge old-7 문제 풀이 이번에 풀 문제는 7번! 소스 코드를 보면 2,+,-,from,=,/,*,_,공백이 필터링되어 있고 val 파라미터에 입력값이 없으면 1로 자동 입력되게 되어있다. 또한 1~5까지 랜덤으로 숫자를 생성하여 각 숫자마다 sql문에서 val파라미터를 입력받는 부분의 ()가 하나씩 늘어나게 되어 있다. 문제는 val파라미터에 2가 입력되면 풀리는거 같다. 여기서 우리는 rand가 1일때를 가정하여 문제를 풀 것이다. 다음에 올 수를 예측할 수 없을뿐더러 1이 나올 때까지 돌리는 게 더 빠르다. 일단 val파라미터에 2를 MOD(5,3)으로 우회해서 넣어보면 query error가 출력된다. 즉, 애초에 2라는 데이터 자체가 존재하지 않았다. (query error는 데이터가 존재하지 않을 시 출력된다.) 그러.. 2023. 7. 10.
[개념정리] UNION UNION, UNION ALL이란? UNION은 두 개 이상의 select문을 합칠 때 사용하며 각각의 select문의 컬럼 수와 데이터 타입이 같아야 사용할 수 있다. UNION ALL도 두 SQL 문의 결과를 결합하는데 사용되는 명령이다. UNION ALL가 UNION과 다른 점은 UNION ALL은 데이터 값이 중복되더라도 조건에 일치하는 데이터를 모두 표시한다. UNION, UNION ALL 문법 select [컬럼 1],[컬럼 2] from [테이블 1] UNION select [컬럼 1],[컬럼 2] from [테이블 2] select [컬럼 1],[컬럼 2] from [테이블 1] UNION ALL select [컬럼 1],[컬럼 2] from [테이블 2] (앞 select문의 컬럼 수가 .. 2023. 7. 10.
Webhacking.kr Challenge old-21 문제 풀이 이번에 풀 문제는 21번! blind sql injetion문제다. Lord of SQL의 경험을 살려 한번 풀어보자. 우선 아무 값이나 넣어 봤더니 login fail이라는 문자가 출력되고 id에 1 pw에 ' or 1=1 #을 넣었더니 wrong password가 출력되었다. 이로써 참일 때와 거짓일 때의 출력의 차이를 찾았으니 바로 파이썬 코드를 이용해 id와 pw를 알아보자 id값이 adein이 나왔는데 admin일 것 같은 의심이 들었다. (아마 예상하는 admin 말고 다른 아이디가 더 존재하는 거 같다. 즉, 3번째 자리가 e인 id 존재) 사실 이 방법은 id값이 하나일 때 정확하지 여러 개가 있다면 각 자리의 값이 섞여서 출력될 수 있는 코드이다.(이번에는 운 좋게 3번째 자리를 제외하고.. 2023. 7. 7.
Webhacking.kr Challenge old-23 문제 풀이 이번에 풀 문제는 23번! 미션이 를 작성하는 걸로 보야 xss문제인 것 같다. 제시된 소스코드가 없으므로 하나씩 대입하면서 조건들이 무엇인지 알아봐야된다. 당연히 필터링이 있을 줄 알고 특수기호들을 입력해 봤는데 전부 입력되어 화면이 출력되었다. 그럼 script나 alert같이 특정 문자가 필터링되어있을 거라 생각하고 script를 입력해 봤다. 역시 필터링되어 있었다. 이제 문자 우회를 하려고 했더니 상관없는 문자를 입력해도 필터링이 되는 것을 발견하였다. 여러 시도를 해본 결과 두 개의 문자가 연속되면 필터링이 되는 것 같다. 즉, 두 글자이상 붙어있으면 안 된다. (중간에 공백이 있으면 입력 가능 Ex) s c r i p t ) 그러므로 문제 푸는 방향을 변경해야 된다. (오히려 더 쉬워졌을지도.. 2023. 7. 5.
[개념정리] Base64 여러 문제들을 풀면서 base64 인코딩이 많이 언급되어 정리하려 한다. Base64 base64란 이진 데이터 (Binary data)를 ASCII 문자로 이루어진 텍스트로 변환시키는 인코딩이다. 위에 표를 보면 마지막 padding이라는 부분이 보일 것이다. 여기서 우리가 매번 문제를 풀 때 마지막에 =이 들어가면 base64로 유추할 수 있는 이유를 알 수 있다. base64는 입력 데이터를 3바이트(24비트) 그룹으로 나누고 base64 문자에서 4개의 문자(각각 6비트)로 변환한다.(위 표를 참고) 그러나 경우에 따라 입력 데이터의 총 바이트 수가 3으로 균등하게 나누어지지 않을 수 있는데 이 경우 인코딩 프로세스는 여전히 유효한 bse64 출력을 생성해야 한다. 이를 위해 이용하는 것이 pad.. 2023. 7. 3.
728x90