전체 글 171

old-17 write-up

문제 정보 https://webhacking.kr/challenge/js-4/ Challenge 17 webhacking.kr 풀이 문제에 처음 접속하면 다음과 같이 입력 폼과 check 버튼의 제출 버튼이 있다. 123을 입력해보면 Wrong이란 문자열이 출력된다. [Ctrl+U] 단축키를 통해서 페이지 소스 코드를 확인해보면 입력폼의 이름은 login이며, 소스 코드는 다음과 같다. 소스 코드를 분석하면 sub() 함수는 login의 pw 값이 unlock이면 location.href 함수를 이용해서 페이지를 이동하고 아니면 alert(Wrong)을 출력한다. 먼저 unlock를 파이썬을 이용해 계산하면 다음과 같이 7809297.1이 나왔다. 입력 폼에 7809297.1을 넣고 Check 버튼을 누..

old-18 write-up

문제 정보 https://webhacking.kr/challenge/web-32/ Challenge 18 webhacking.kr 풀이 가장 처음 접속하면 SQL Injection 문제인 것을 알 수 있고, view-source 버튼이 있다. view-source의 소스 코드는 다음과 같다. 분석해보면 index.php에 get 메소드를 통해서 이름이 no인 입력문자열을 받아서 제출하는 폼이 존재한다. 또한 아래 php 코드를 통해서 no라는 파라미터를 get 메소드로 요청받게 되면 preg_match 함수인 정규표현식을 통해서 no 파라미터 값에 키워드가 포함된다면 no hack이라는 문자열을 출력한다. $result 부분에는 요청되는 쿼리를 보여주고 있다. 그 아래는 id가 guest라면 hi gue..

old-26 write-up

문제 정보 https://webhacking.kr/challenge/web-11/ Challenge 26 webhacking.kr 풀이 문제에 접속하면 바로 view-source를 누르도록 되어있다. 소스 코드는 다음과 같다. 소스 코드를 분석해보면,먼저 preg_match 함수를 통해서 GET 메소드 방식으로 받아오는 id 파라미터에 대해서 admin 이 포함되어 있다면 no! 라는 문자열을 출력하고 exit 함수를 실행한다. 다음으로 id 파라미터에 있는 값을 디코딩을 수행하고 id에 admin이 있다면 해결하는 것을 알 수 있다. view-source 다음과 같이 id 파라미터에 admin을 그냥 포함시켜 요청하면 no!를 출력한다. burp suite를 이용해서 admin이란 단어를 URL 인코딩..

중국 해커, 국내 IP 카메라 해킹... 4,500개 사생활 영상, 텔레그렘에 노출 (08-01 34주차)

[보안뉴스 김경애 기자] 중국 해커가 국내 IP 카메라를 해킹해 4,500개 이상의 영상을 텔레그램을 통해 무방비로 유포한 정황이 포착됐다. 해킹된 영상정보에는 알몸 노출 화면 등 민감한 개인 영상정보가 대거 포함돼 있어 파장이 커질 것으로 보인다. 출처: https://m.boannews.com/html/detail.html?tab_type=1&idx=125342 [단독] 중국 해커, 국내 IP 카메라 해킹... 4,500개 사생활 영상, 텔레그렘에 노출 중국 해커가 국내 IP 카메라를 해킹해 4,500개 이상의 영상을 텔레그램을 통해 무방비로 유포한 정황이 포착됐다. 해킹된 영상정보에는 알몸 노출 화면 등 민감한 개인 영상정보가 대거 포함돼 있 m.boannews.com 느낀 점: 이번 중국 해커에게..

보안뉴스 2024.01.08

old-24 write-up

문제 정보 https://webhacking.kr/challenge/bonus-4/ Challenge 24 agentfacebookexternalhit/1.1; kakaotalk-scrap/1.0; +https://devtalk.kakao.com/t/scrap/33984 webhacking.kr 풀이 문제에 접속하면 다음과 같이 client ip 와 agent 폼이 보이고 그 밑에는 Wrong IP라고 한다. 아래는 view-source를 눌렀을 때 나오는 소스 코드이다. 소스 코드를 딱 봤을 때 처음 view-source를 누르기 전인 client ip와 agent를 echo를 통해서 보여주고 있다. 또 그 아래에는 ip가 127.0.0.1일 때 solve(24)를 통해서 문제를 풀 수 있다고 나와있다..

old-54 write-up

문제 정보 https://webhacking.kr/challenge/bonus-14/ Challenge 54 webhacking.kr 풀이 문제에 접속하면 ? 문자의 위치에 flag 값을 빠르게 한 글자씩 보여준다. 여기서 개발자 도구에서 콘솔 창에 소스 코드를 수정해서 다시 출력하면 flag 값을 획득할 수 있을 것이라고 생각했다. 다음은 f12를 눌렀을 때 나오는 소스 코드이다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return nu..

DOM XSS

문제 정보 https://dreamhack.io/wargame/challenges/438 DOM XSS Description Exercise: DOM XSS에서 실습하는 문제입니다. 문제 수정 내역 2023.08.11 Dockerfile 제공 dreamhack.io 풀이 문제 웹 사이트에 접속해보면 vuln, memo, flag의 페이지가 존재하고, vuln 페이지에서 DOM XSS의 취약점이 있을 것처럼 보인다. memo는 flag를 보여주는 페이지, flag는 사용자로 요청을 수행하는 걸로 보인다. 아래는 문제 소스 코드의 일부인데, CSP에 strict-dynamic이 있는 것을 볼 수 있다. strict-dynamic은 이미 허용된 스크립트의 내부에서 동적으로 생성된 스크립트를 허용하는 옵션이다...

Relative Path Overwrite Advanced

문제 정보 https://dreamhack.io/wargame/challenges/440 Relative Path Overwrite Advanced Description Exercise: Relative Path Overwrite의 패치된 문제입니다. 문제 수정 내역 2023.08.10 bot.py 수정, Dockerfile 제공 dreamhack.io 풀이 전에 풀었던 RPO 문제의 Advanced 문제이다. 먼저 flag 값이 어디있는지 확인해보면 RPO 문제와 동일하게 사용자의 쿠키 값에 flag 값을 저장한다는 것을 볼 수 있다. def check_xss(path, cookie={'name': 'name', 'value': 'value'}): url = f'http://127.0.0.1/{path..

Relative Path Overwrite

문제정보 https://dreamhack.io/wargame/challenges/439 풀이 해당 문제에 접속하면 Home, Vuln Page, Report 3개의 페이지가 존재한다. 참고로 반응형 웹 페이지가 아니므로 전체화면으로 해야 입력 폼이나 메모들을 볼 수 있다. Vuln Page에 접속하게 되면 아래와 같이 param의 파라미터 값이 그대로 출력되는 것을 확인할 수 있다. Report 페이지를 보면 http://127.0.0.1로 요청을 보내는 것으로 보아 Request bin을 이용해야 할 것 같다. 아래는 문제 파일 안의 bot.py 소스 코드이다. 여기서 flag값이 어디 있는지 확인할 수 있는데, check_xss 함수와 not check_xss 함수를 보면 사용자의 쿠키가 flag값으..

Relative Path Overwrite (RPO) 취약점이란

Relative Path Overwrite (RPO)란? 일반적으로 자바스크립트나 스타일시트 코드를 로드하는 과정에서 경로 해석의 문제로 인해 발생하며, 임포트하는 페이지의 내용을 조작시킬 수 있다면 공격자가 의도한 자바스크립트, 스타일시트 코드를 로드시킬 수 있다. 아래와 같은 소스 코드를 페이지에서 임포트 해온다고 했을 때, http://host/rpo.php로 접근하였을 땐 둘 다 같은 경로의 /app/main.js 를 로드하지만 http://host/rpo.php/ 처럼 마지막에 /문자를 붙여서 요청하게 되면 두 번째 소스 코드는 host/rpo.php/app/main.js 를 로드하게 된다. 자바스크립트와 연계 만약 RPO 취약점으로 로드하는 자바스크립트 코드의 앞 부분을 공격자가 조작할 수 있..

Web Hacking/Study 2024.01.02