gmae rules? 를 들어가보면 CTF FLAG 형식을 알수 있으며 그곳에 FLAG가 있다. 그러나 그것은 Window UserAssist values와 같은 암호화 방식이 이루어져 있다고 설명되어져있다.

cybrics{Na5JRe_g0_G3u_Z1P_Pu3PX}

Window UserAssist values는 ROT-13으로 encryption 되dj있기에 ROT-13으로 decryption 해주면 된다.

 

cybrics{An5WEr_t0_T3h_M1C_Ch3CK}

 

http://109.233.57.94:54040/ 해당 URL로 들어가보면 굉장히 촐싹거리는 캡챠 들을 볼수 있다.

 

5개의 캡차들이 화면 전체를 쉬지 않고 돌아다닌다. 일정시간이 지난다면 캡챠가 만료되기도 한다.

그렇다면 시간안에 저 캡챠들을 어떻게 잡아야 될까? 직접 잡아야될까?

 

페이지 소스 보기를 하면 captcha 관련 코드를 확인 할수 있다.

 

 let dividerA = (Math.random() * 250) + 250;
    let dividerB = (Math.random() * 250) + 250;
    let dividerC = (Math.random() * 25) + 25;

    function loop() {
        const height = window.innerHeight - captchaBox.offsetHeight;
        captchaBox.style.top = Math.sin(Date.now()/dividerA) * (height/2) + (height/2);

        const width = window.innerWidth - captchaBox.offsetWidth;
        captchaBox.style.left = Math.sin(Date.now()/dividerB) * (width/2) + (width/2);

        captchaBox.style.transform = `rotate(${Math.sin(Date.now()/dividerC) * 10}deg)`;

        setTimeout(loop, 1);
    }
    loop();

이부분을 날리고 위에 부분만 살려두도록 하자

function addCaptcha() {
    const captchaBox = document.createElement('div');
    const widgetId = grecaptcha.render(captchaBox, {
        'sitekey' : '6Ld0sCEUAAAAAKu8flcnUdVb67kCEI_HYKSwXGHN',
        'theme' : 'light',
        'callback': 'good',
    });

    captchaBox.className = 'captcha';
    document.body.appendChild(captchaBox);

    count ++;
    updateStatus();
}

console 창에 addCaptcha함수를 계속해서 불러주면 문제를 해결할수 있다.

 

다른 매우 쉬운 방법이 있다. 그건 댓글남기시던가 하시면 알려 주겠다.

'Challenge > CTF' 카테고리의 다른 글

[2021 hspace] Baby_Crypto  (0) 2021.05.07
[DiceCTF] web/Web Utils (2)  (0) 2021.03.09
[DiceCTF] web/Web Utils (1)  (0) 2021.02.23
[DiceCTF] web/Missing Flavortext  (0) 2021.02.16
[DiceCTF] web/Babier CSP  (0) 2021.02.09

orang

 

함수, 상수등이 들어가는 코드영역 전역변수가 들어가는 DATA와 BSS영역 동적할당되는 HEAP과 마지막으로 지역변수가 들어가는 STACK

 

kernel 영역은 사용자의 접근을 허가 하지 않는다.

 

1. stack 영역은 프로그램이 자동으로 사용하는 임시 메모리 영역이다.

지역(local) 변수, 매개변수(parameter), 리턴 값 등 잠시 사용되었다가 사라지며 함수 호출시 생성되고 함수가 끝나면 반환 된다.

 

2. heap 영역은 동적으로 메모리를 할당 할 때 쓰는 메모리 영역으로 메모리 주소 값에 의해 참조 및 사용되는 영역이다.

 

3. data, bss 영역은 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장된다.

프로그램이 실행 될 때 생성되고 프로그램이 종료 되면 시스템에 반환 된다.

변수가 초기화 되면 데이터 영역, 초기화 되지 않으면 bss영역이다.

 

4. code 영역은 코드자체를 구성하는 메모리 영역으로 기계어 명령어들과 어셈블리 코드가 자리한다.

 

스택은 위에서 아래로 힙은 아래에서 위로 자라며 사이에 라이브러리 영역이 존재한다.

 

 

 

 

 

'Basic Concepts > System' 카테고리의 다른 글

GOT Overwrite  (0) 2020.04.24
PLT & GOT 정리  (0) 2020.04.24
RTL(Return to libc) & chaining  (0) 2020.04.23
Fake EBP  (0) 2020.04.22
SFPO(Stack Frame Pointer OverFlow)  (0) 2020.04.22

쿠키란 무엇인가?

쿠키는 서버가 클라이언트 측에 상태 정보를 저장하고 추출할수 있는 어떠한 값이다.

Cookie 쿠키는 http에서 없어서는 안될 정도로 유용하고 광범위하게 사용 되고 있다.

이러한 쿠키는 서버에서도 클라이언트에서도 생성할수 있으며 브라우저는 이 쿠키값을 기억하며 클라이언트와 서버가 통신을 할때 쿠키는 Request에 포함되어 전달된다.

 

웹에서 뺄래야 뺄수 없는 쿠키는 많은 보안적 위협을 야기한다.

수많은 웹사이트들이 개인정보를 쿠키에 저장하고 있으며 공격자는 이를 탈취하기위해 여러 공격을 시도한다.

 

HTTP는 Stateless 프로토콜이다.

HTTP는 기본적으로 상태정보를 기억하지 못하기 때문에, 서버는 요청자가 누구인지 식별 할 수 없다.

이를 해결하기 위해 쿠키에 저장된 정보를 통해 사용자를 구별하고 있다.

 

쿠키는 클라이언트에서 js를 사용하여 조회할수 있기에 공격자들은 XSS 공격을 시도한다.

이를 막기위한 것이 HTTP Only Cookie이다.

HTTP Only를 추가함으로써 웹 브라우저는 Cookie로 접근 할수 없게 된다.

Response.Cookies.Add(new HttpCookie("쿠키 이름")
{
   Value = "쿠키 값",
   HttpOnly = true
});

클라이언트에서 쿠키로 접근 할수 없게 되므로 XSS공격은 의미가 없게 된다.

앞에서 말했다시피 쿠키값은 서버와 클라이언트측의 Request에 포함된다.

공격자들은 이를 노려 네트워크를 감시할 수 있지만 이를 막기 위해 HTTPS 프로토콜을 사용하여 데이터를 암호화하는 방법이 있다.

 

갖은 노력에도 불구하고 개발자의 실수 등에 의해 https로 전달 되어야 할 정보가 http로 전달되기도 한다.

네트워크 감시와 개발자의 실수 이 모두를 사전에 예방하기 위해 Secure라는 것이 있다.

쿠키를 생성 할때 뒤에 붙여 주기만 하면 된다.

Set-Cookie: 쿠키 이름=쿠키값; secure

이 secure를 설정해주면 해당 쿠키값은 https 프로토콜을 통해서만 전송이 된다.

'Basic Concepts > Web' 카테고리의 다른 글

"X"series HTTP Headers  (0) 2023.05.24
GraphQL  (2) 2021.11.30
DOM(Document Object Model)  (0) 2020.04.01
생각날때마다 끄적이는 웹 공격 대응방법  (0) 2020.03.05
XSS (Cross Site Script)  (0) 2020.02.26

+ Recent posts