목록분류 전체보기 (186)
Iriton's log
xss-1 푼 이후에 풀고 오기! 얘는 xss-1처럼 코드가 먹히지 않는다. /vuln 에서도 URL에는 alert(1)을 실행하는 스크립트가 있지만 alert 창이 뜨지 않았다. script가 아닌 img 태그를 이용할 수도 있다. img 태그에 src를 없는 이미지를 불러와서 오류를 발생시키면 처리할 코드를 onerror에 적어준다. 이때, onerror에 alert(1)을 넣어주면 처리되는지 보자. 이미지 오류가 뜨면서 alert 창이 떴다. 마찬가지로 alert창이 뜨게 만들었다면 취약점을 찾은 것이다. alert 대신 location.href='/memo?memo='+document.cookie 를 넣어주자. 이때 주의할 점은 onerror="" 안에 들어갈 코드이기 때문에 더블쿼츠와 싱글쿼츠를..
위치까지 자세히 알려 준다. 드림핵 xss 문제를 풀다 오니 페이지별 기능이 다 익혀져 있어서 코드를 따로 보진 않았다. /vuln : 취약점 연습하는 공간 정도로 생각 (이 문제에서는 alert(1)을 실행시킴) /memo : 메모 페이지이지만 flag를 띄우는 곳으로 간주 가능 /flag : 실질적으로 xss 공격을 하는 곳 우선 답을 알고 있기에 제공하고 시작하겠다. 가장 기본적인 xss 코드라 넣어봤는데 쉽게 풀렸다. /vuln 페이지에 가면 alert(1)을 실행한다. alert이 먹히면 이 자체만으로 취약점이 된다. 스크립트 코드 주입이 가능하다는 뜻이기 때문이다. 이를 이용하여 document.cookie로 cookie를 빼내올 수 있다. location을 이용해 /memo로 위치를 지정해 ..
DOM이란 Document Object Model의 약자이다. HTML의 문법은 태그의 집합으로 구성되어 있고 이러한 태그들은 트리 구조로 객체가 형성되는데 이러한 트리 구조 집합을 DOM 구조라고 한다. DOM Based XSS란 DOM 구조를 이용하여 요소들을 수정하거나 추가하는 등 동적 행위를 할 때 접근하는 JavaScript에 악성 스크립트를 삽입하여 클라이언트 측 브라우저에서 악성 스크립트가 실행되도록 하는 공격이다. Reflected XSS와 같이 동적 페이지를 구성하는 과정 상 발생하는 XSS 공격이다. 하지만 Reflected XSS는 서버 측에서 동적 페이지를 구성하는 환경에서 발생되는 XSS이다. 반면 DOM XSS는 클라이언트 측에서 사용자 입력 값을 통해 동적 페이지를 구성하는 환..
목표 지뢰게임 리버싱을 통해 어느 칸을 누르든 첫 클릭에 바로, 무조건 승리할 수 있게 할 것이다. dll Injection은 아니고 단순히 디버거로 메모리 주소 조작만 할 것이다. 나중에 dll도 만들어 볼 계획이다. 추론 지뢰 게임은 어떠한 칸을 클릭하면 그 칸이 지뢰냐, 아니냐에 따라 띄우는 결과가 다 다르다. 지뢰 게임에서 승리하게 되면 이름을 입력하라는 팝업이 뜬다. 해당 팝업을 띄우는 함수를 호출하는 주소를 찾아내어, 승리 시 처리되는 함수 주소를 유추하여 알아낸다. 알아낸 주소를 기억한다. 어떤 칸을 클릭할 때의 이벤트로, 기억해둔 승리 함수 주소로 이동하게 한다면 어떠한 칸을 선택해도 승리 함수로 이동하여 승리한 것으로 처리될 것이다. 메모리 조작 방식을 이용 추론 방법에서 좀 더 구체적으..
문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 풀이 소수는 1과 자기자신만을 약수로 가지는 수이다. 주어진 숫자가 소수인지 판별하여 소수인 경우 개수를 세고 최종적으로 개수를 출력하면 된다. #include int is_prime(int num) { if (num < 2) return 0; // 소수가 아님 for (int i = 2; i * i
보호되어 있는 글입니다.
로그인 버튼이 뜨고 그 외에는 아무것도 할 수 없다. 바로 첨부파일의 코드를 살펴 보자. userid와 userpassword를 입력 받는데 userid가 admin일 경우 flag 값을 띄운다. password가 조건에 들어가지 않는다. 그럼 어찌 됐건 admin으로 로그인만 하면 되니 간단한 SQL Injection으로 해결할 수 있을 거 같다. query문을 보면 userid="{userid}" 으로 되어 있다. 다른 코드를 보니 입력값에 특수문자 제약이 걸려 있지도 않다. 즉, 더블쿼츠(")를 입력하여 우리가 임의로 userid 값 입력을 닫고, 뒤에는 주석처리 하여서 password 값에 상관없이 admin으로 로그인 할 수 있다. 주석은 '--'에 해당한다. password