본문 바로가기

전체 글

(312)
Relative Path Overwrite Advanced https://chulmin.tistory.com/339에서 풀었던 문제의 Advanced 이기에 바로 코드 분석으로 넘어가자! • 코드 분석 filter.js 파일이 static폴더 안에 있어 경로조작이 어려울 거 같다.! 404.php의 역할은 filter.js를 잘못된 경로로 요청을 했을 때 아래처럼 not found를 반환한다 여기서 static부분에 스크립트문을 삽입하면서 로드하는 filter.js의 코드가 실행이 된다는 것이다.!! • 문제 풀이 http://host3.dreamhack.games:8593/index.php/;alert(1);//?page=vuln&param=dreamhack 입력을 하면 alert(1) 코드를 삽입하고 나머지 부분을 주석처리를 한다 그렇게 되면 script코드..
Relative Path Overwrite Relative Path Overwrite (RPO): 서버와 브라우저가 상대 경로를 해석하는 과정에서 발생하는 차이점을 이용한 공격 Relative Path Overwrite를 실습하기 위한 문제이다. • 취약점 설명 Relative Path Overwrite(RPO)는 상대 경로 기반의 URL을 덮어써서 의도하지 않은 동작을 수행하는 공격 방법이다. script, link등 resource를 읽어오는 과정에서 Host가 포함되지 않은 URL을 의미하며, 이를 overwrite할 수 있는 경우에 resource의 주소 등을 조작하여 공격자가 원하는 동작으로 유도할 수 있다. ex) XSS... • 조건 스크립트명 이하의 경로를 별도로 지정해도 같은 페이지가 조회되는 경우 서버는 하위 요소를 경로가 아닌..
phpMyRedis redis 취약점을 활용하기 위해서는 redis 취약점이 뭔지 알아야한다. Remote Dictionart Server(redis) "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스(NoSQL) 관리 시스템이다. 휘발성이 높은 메모리이기에 SAVE라는 config로 몇초에 몇번 파일이 변경되었을 때 저장을 하는 config가 있다. 1. redis에는 eval 명령어를 이용해 Lua script가 실행이 가능하다. eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2. redis는 일정 시간마다 메모리 데이터를 파일 시스템에 저장한다.(주기적으로 저장함) https://docs.w3cub.com/redis/eval Eval ..
Client Side Template Injection CSTI(Client Side Template Injection) 클라이언트에서 사용되는 템플릿에 임의 구문을 주입하는 의미를 가진다. -> 템플릿 표현식 + 자바스크립트 구문을 조합해서 XSS 공격을 시도할 수 있는 취약점이다. SSTI 와의 차이점은 악용을 통해 이루어지는 효과가 다르다(서버 측 주입이면 원격코드를 실행시키는 것이 목적이다) 바로 소스코드를 보자! @app.after_request def add_header(response): global nonce response.headers['Content-Security-Policy'] = f"default-src 'self'; img-src https://dreamhack.io; style-src 'self' 'unsafe-inline'; s..
CSP Bypass CSP 취약점을 이용하여 푸는 문제이다...! 이 문제를 풀기 위해 CSP 취약점에 대해 알아야 한다.! ∙ CSP (Content-Security Policy) 신뢰할 수 있는 웹 페이지 CSP에서 악의적으로 XSS, 클릭 재킹 및 기타 코드 삽입 공격을 방지하기 위한 정책이다. 지시문 default-src : 모든 리소스에 대한 정책 script-src : Javascript 등 웹에서 실행 가능한 스크립트에 대한 정책 style-src : css에 대한 정책 connect-src : script src로 불러올 수 있는 url에 대한 정책 img-src : 이미지 ( data: URL에서 이미지가 로드되는 것을 허용하려면 data:를 지정 ) script-nonce : script-src에 nonc..
[wargame.kr] crack crack crack it .htaccess 을 크랙하라는데,,, bruteforce을 이용한다?! (해당 문제는 참고를 하여 문제를 풀었습니다..!) G4HeulB 문자열로 시작하는 글자를 찾는거 같다,,,! .htpasswd 을 다운 받으면 아래 문구가 적혀있다.. blueh4g:$1$VH6/fWZp$mWttF/M8/X8s8RgZ.pWrS/ .htpasswd 파일 포맷을 정리해보자 blueh4g : 계정 이름 $1 : 해시 알고리즘 종류 ($1 //MD5 알고리즘 (128bit), $5 //SHA-256(256bit), $6 //SHA-512(512bit) ) $VH6/fWZp : 솔트 값 $mWttF/M8/X8s8RgZ.pWrS/ : 해시된 패스워드 이를 이용해 브루트포스 공격을 통해 주어진 해시된 패스워드값이 나오는 평문 ..
[wargame.kr] dun worry about the vase 오라클 패딩 복호화 시스템에 암호문을 넣었을 때에 그에 대한 패딩의 올바름 유무를 보여주는 오라클 처음 웹 페이지에 들어가면 ID와 PW 입력 값에 자동으로 guest가 들어가 있어 로그인을 해주면 admin 세션이 아니라는 문구가 출력이 된다. 쿠키 에디터 툴을 사용해 세션을 보면 L0g1n와 value 값이 저장되어 있다,,! 이 문제는 위에서 말한 오라클 패딩 공격을 해야하는 문제이다. 해당 세션 값을 URL 디코딩을 해주면 암호화 값이 나온다,,! =이 보이는 걸 봐서 base64 암호화로 두 개의 세션을 합친 거 같다..! import base64 a = "9bJ/hFBcpjE=" b = "O1L1mtBDKO8=" a_decoded = base64.b64decode(a) b_decoded = b..
BFS BFS 그래프를 탐색하는 알고리즘이며 어떤 정점에서 시작해 다음 깊이의 정점으로 이동하기전 현재 깊이의 모든 정점을 탐색하며 방먼한 정점은 다시 방문하지 않는 알고리즘으로 같은 가중치를 가진 그래프에서 최단거리알고리즘으로 쓰인다. BFS(G, u){ u.visited = 1; q.push(u); while(q.size()){ u = q.front(); q.pop() for each : G.adj[u] if v.visited = false{ v.visited = u.visited + 1 q.push(v) } } } #include #include #include using namespace std; vector adj[100]; int visited[100]; int nodeList[] = {10, 12,..