WriteUp

    Root-me[web_client] : Javascript - Webpack

    Root-me[web_client] : Javascript - Webpack

    이번에 새로 나온 문제다. 이상한 사이트가 반겨주는데, 사실 사이 자체에서 취약점을 찾는데에는 실패했다. 소스코드를 봐도 이상한 점이 별로 없었다. related resource에서 보니 webpack 이라는 것을 이용한 문제인 것 같아서 webpack vulnerablities 를 검색해 보니 다음과 같은 CVE를 찾아볼 수 있었다. webpack 이 서버인가 보다. 여기서 소스 코드를 볼수 있다고 한다. 웹소켓 서버 자체에서의 취약점인가 보다. 소스 코드르 보니 Webpack:// 부분이 보인다. 저게 CVE 에서 명시된 ws:// 부분인가 보다. 그럼 저기에서는 소스 코드를 볼 수 있다는 뜻인 것 같은데 한번 확인해 보자. 소스 부분을 보니 저 사이트의 소스코드 전체가 노출이 되는 것 같다. 그래서..

    RTL_Core

    RTL_Core

    nc ctf.j0n9hyun.xyz 3015 32비트 환경이다. 한번 실행을 해보자. NX 가 걸려있는 것을 확인할 수 있다. RTL 을 사용하는 조건이겠지? 문제 이름이 RTL Core 이기 때문이다. 함수가 뭐있는지도 확인해보자. 중요해 보이는건 제목에 들어있는 core 함수와, check_passcode 함수가 중요해 보인다. 메인 문을 보자. int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+Ch] [ebp-1Ch] setvbuf(_bss_start, 0, 2, 0); puts(&::s); printf("Passcode: "); gets(&s); if ( check_passcode(&s) == has..

    LOS-rubiya : dragon

    query : {$query}"; $result = @mysqli_fet..

    Forensics : 잔상

    Forensics : 잔상

    이미지 파일이 두개 주어졌다. 언뜻보면 같아보이지만 다르니까 2개를 줬을꺼다. 일단 딱히 뭐 할게 없어서 HxD로 들여다 봤다. 보면 뭐가 다른지 알아야 하지 않겠지 싶어서 해당 기능을 이용해서 차이점을 봤다. 근데 다른 쌍을 하나씩 적어보니까. N / H Q / a I / c c / k ? / C ? / T ... 이런식으로 이어지드라. 누가봐도 flag형식이 아니냐 싶어서 일일히 찾아서 적어봤다. hex값이 보기가 더 편해서 hex 값을 옮겨온 다음 디코드 해줬다. 48 61 63 6b 43 54 46 7b 77 68 33 72 33 5f 40 72 65 5f 79 6f 75 5f 6c 30 30 6b 69 6e 67 3f 7d 디코딩 하면 HackCTF{wh3r3_@re_you_l00king?} 역..

    Pwnable : Random Key

    Pwnable : Random Key

    프로그램을 실행해 보았다. 이런 값이 나오네. gdb로 돌려보자. ㅇㅋ NX 걸려있다. 스택 실행권한 없다. 이제 어떤 함수가 있는지 보자. main문만 잘 보면 될것 같다. 볼까 아 랜덤함수가 눈에 들어온다. 아마도 rand 값이랑 일치하는 값을 찾아줘야 할 것 같다. IDA로 한번 더 볼까? int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { unsigned int v3; // eax int v4; // [rsp+0h] [rbp-10h] int v5; // [rsp+4h] [rbp-Ch] unsigned __int64 v6; // [rsp+8h] [rbp-8h] v6 = __readfsqword(0x28u); se..

    Pwnable : 1996

    Pwnable : 1996

    nc ctf.j0n9hyun.xyz 3013 한번 실행을 해보니 다음과 같이 나온다. 이렇게 입력을 해주면 환경변수 값을 출력을 해주는 것 같다. 대신 해당 이름의 변수가 없어서 출력이 안된 것 같네용 일단 보안옵션은 NX가 있습니다. 스택의 실행권한을 뺏는 옵션이죠 함수 종류도 확인해 보구용 눈에 띄는건 spawn_shell(), main 정도 있구요한번 봅시다잉 음 shell_spawn은 gdb로 안보인다. 이건 ida로 보자. int spawn_shell(void) { char *argv; // [rsp+0h] [rbp-10h] __int64 v2; // [rsp+8h] [rbp-8h] argv = "/bin/bash"; v2 = 0LL; return execve("/bin/bash", &argv,..

    challenge 57 (600pt)

    challenge 57 (600pt)

    입력창이 존재한다. 소스코드를 주었으니 한번 보면 되겠다.