본문 바로가기
728x90

Web88

[개념정리] Mutation XSS https://jh-hack.tistory.com/197 [개념정리] Dompurify이번에 문제를 풀다가 DOMpurify를 우회하는 방법에 대해 알게되었다. DOMpurify란? innerHTML은 문자열이 자동으로 HTML 요소로 인식될 수 있게 기능을 한다.이러한 기능이 있을때 어떤 문제가 있을까?jh-hack.tistory.com 위에 설명한 Dompurify를 Mutation XSS로 인해 우회할 수 있는데 Mutation XSS란?2013년 처음 등장한 취약점으로 Mario Heiderich가 쓴 논문에서 확인할 수 있다.이는 innerHTML 때문에 발생하며 브라우저의 잘못된 해석 방식의 차이로 인해 발생한다. 예를 들어보면  우리는 닫는 태그를 작성하지 않은 채 코드를 작성했지만 브라우저.. 2024. 6. 25.
[개념정리] Dompurify 이번에 문제를 풀다가 DOMpurify를 우회하는 방법에 대해 알게되었다. DOMpurify란? innerHTML은 문자열이 자동으로 HTML 요소로 인식될 수 있게 기능을 한다.이러한 기능이 있을때 어떤 문제가 있을까? innerHTML에 아무런 필터링이 없으면 XSS 공격에 매우 취약하다.이러한 문제점을 제거해주는게 DOMprify이다. DOMPurify는 화이트리스트 접근 방식을 취하는데 특정한 태그와 속성, 프로토콜만 허용한다.// 예시DOMPurify.sanitize(''); // becomes DOMPurify.sanitize(''); // becomes DOMPurify.sanitize('abcdef'); // becomes abcDOMPurify.sanitize(''); // becomes.. 2024. 6. 23.
[개념정리] Prototype Pollution Prototype 이란자바스크립트에서 모든 객체들이 메서드와 속성을 상속받기 위한 객체 객체를 생성할 때 기본적으로 상속되며 여러 메소드를 포함한다. 새로운 인스턴스가 생성될 때, 생성된 인스턴스는상위 객체의 프로토타입을 상속받아 생성되고, 인스턴스의 상위 객체 또한 더 위의 상위 객체로부터 프로토타입객체를 상속받아 생성되는데 이렇게 프로토타입 객체를 상속받고 또 상속받는 것을 '프로토타입 체인'이라고 한다.prototype-pollutions이란North Sec 2018, 보안 연구자 Olivier Arteau의 “Prototype pollution attacks in NodeJS applications“라는 발표를 했다.공격자가 JS언어 고유의 프로토타입 체인 동작 원리를 이용해 웹 서버를 공격하는 .. 2024. 6. 5.
[개념정리] PHP Deserialization 취약점 Stream Wrapper란?PHP에서 파일을 다루는 함수에 대한 인터페이스 역할을 하는 것으로 fopen(), copy(), file_exists() 및 filesize() 등과 같은 파일 시스템 함수와 함께 사용하기 위한 다양한 URL 스타일 프로토콜을 위한 많은 내장 래퍼를 제공하는 것을 말한다. 내장 래퍼를 통해 파일 입출력을 수행할 수 있다.ex) http://, https://, file://, phar:// ....phar란?phar(PHP Archive)는 많은 코드 파일 및 기타 리소스를 단일 아카이브 파일로 사용할 수 있는 패키지 형식이다. phar 파일은 총 4개의 구조로 이루어진다.StubManifestFile contentsSignature (Optional)Stub작은 형태의 코.. 2024. 5. 26.
Webhacking.kr Challenge old-22 문제 풀이 이번 문제는 admin으로 로그인하는 게 목표고 컬럼명을 id와 pw를 제시해 준 것으로 보아 sql injection을 하라고 유도하는 것 같다.  일단 admin으로 로그인 시도 결과 비밀번호가 틀리면 Login fail!이 나타난다. 두 번째 시도로 간단한 sql문을 입력해 보자 id에 ' or 1=1#을 입력하니  흠... 단순 로그인 실패 메시지와 다른걸로 보아 sql문이 정상적으로 작동하는 것으로 예상 바로 injection을 시도해 봤다. import requestsimport timeurl="https://webhacking.kr/challenge/bonus-2/"cookies={"PHPSESSID":"자신의 쿠키값"}string="qwertyuiopasdfghjklzxcvbnmQWERTY.. 2024. 4. 28.
Webhacking.kr Challenge ouroboros golf 문제 풀이 이번 문제의 조건은 매우 간단한다. pw파라미터를 받고 해당 pw로 db에서 pw를 가져와 입력받은 pw와 출력된 pw가 같으면 문제가 풀린다. 또한, 필터링도 . 말고는 없다. 그럼 pw값이 어떤게 있는지 확인하기 위해 간단한 쿼리를 입력해 보면 아무것도 출력되지 않는다. 혹시 pw값이 여러개여서 그런가 하여 limit를 입력해 봐도 아무 값도 출력되지 않았다. 그래서 처음부터 db에 pw값이 저장되어 있지 않다는걸 예상할 수 있었고 union을 통해 확인할 수 있었다. union을 이용하여 pw출력값을 우리 마음대로 할 수 있지만 쿼리 자체의 입력값과 pw 출력값이 같아야 문제가 풀리기 때문에 문제 풀기가 쉽지가 않다. 이처럼 "를 이용하여 'union select를 출력할수 있지만 이렇게 해도 결국.. 2024. 4. 21.
Webhacking.kr Challenge old-57 문제 풀이 이번 문제는 메시지 제출폼이 구현되어 있다. 코드를 보면  msg와 se를 get으로 받아 session [id], msg, flag, se를 각각 id, msg, pw, op 컬럼에 저장하고 있다.우리는 flag 즉, pw컬럼을 읽어오면 된다. select, and, or, not, &, |, benchmark가 필터링되어 있지만 딱히 큰 문제는 되지 않는 것 같다.다른 메시지 출력이 없으므로 time base injection을 수행하면 될 것 같다. if문을 이용해 코드를 짜보면 import requestsimport timecookies={"PHPSESSID":"0pau5r565eckd9hij5j6i87pqo"}pw=""for i in range(0,200): #길이구하기 start=time.. 2024. 4. 17.
Webhacking.kr Challenge old-29 문제 풀이 이번 문제는 파일을 업로드하면 업로드 시간, ip, 파일명을 나열해 주며 flag는 다른 테이블에 있다고 나와있다. 우선 다른 테이블에 flag가 있으면 파일 업로드가 가능하므로 웹쉘을 이용하는 방법으로 접근해 봤지만 업로드 파일 경로가 노출되지 않아 다른 방법을 생각했다. 우리가 흔히 table과 colunm값을 출력하는것은 sql injection에서 union을 이용하여 해 봤을 것이다. 이를 바탕으로 file명을 이용하여 injecion을 시도해 보려 생각한 결과 우리가 평소에 했던 select문에서 union을 사용한 방법과 달리 이 문제는 단순 업로드 파일을 나열해 주는 출력을 가지고 있어 select문에서는 인젝션이 불가능하고 파일을 업로드하여 db에 저장하는 insert문에서 인젝션이 일어.. 2024. 4. 8.
Webhacking.kr Challenge old-48 문제 풀이 이번 문제는 파일, 게시글 업로드 기능과 파일, 게시글을 확인, 삭제하는 기능이 있다. 처음에 xss를 시도해봤지만 위에 사진과 같이 문자로 출력되는 걸 볼 수 있다. 그다음 파일 업로드 취약점을 시도해본 결과  pre 태그로인해 문자열 취급을 받아 실행되지 않았다. 또한 파일명을 %2E%2E%2F %2E%2E%2F %2E%2E%2Fflag.txt로 변경 후 업로드 결과파일명이 url로 들어가면서 디렉토리 리스팅 취약점을 시도했지만 파일도 없을뿐더러 권한도 막혀있어 실패했다.다른 파일명으로도 시도해 본 결과 나오지 않았다. 여기서 얻을 수 있는 것은 웹서버가 우분투기반으로 되어 있다는 것이다. 여러 시도를 해본 결과 파일 업로드, 게시판 업로드 기능에서 flag를 찾을 수 없어 삭제 기능을 이용해보려 했.. 2024. 4. 2.
Webhacking.kr Challenge old-40 문제 풀이 이번 문제는 sql injection인걸 바로 알 수 있다. guest 계정의 no, id , pw가 기본값으로 입력되어 있어 쉽게 로그인할 수 있다.아마 admin계정으로 로그인하는게 아닌가 예상된다. no, id ,pw 모두 get으로 전송되고 있고 3개의 파라미터 중 어느 파라미터를 이용할지 확인해봐야 한다... 2024. 3. 30.
728x90