본문 바로가기

분류 전체보기270

[XSS Game] Level 5 이번에도 마찬가지로 스크립트를 삽입하여 alert 팝업을 띄우라고 하고 있다. 문제 설명을 보니 DOM에 새로운 요소를 넣지 않고도 공격자들이 공격을 할 수 있다고 한다. 일단 주어진 화면을 확인해보았다. Sign up 버튼을 누르면 주소가 위와 같이 변한다. 이메일을 치고 Next 버튼을 누르면 위의 화면이 뜨고 몇초 뒤에 다시 처음 화면으로 돌아간다. 한번에 감이 오지 않아서 힌트를 조금 참고해봤다. 1. 제목이 힌트 2. url 파라미터를 봐라 제목으로 봐서는 프로토콜에 문제가 있는 듯 했다. 프로토콜은 정보기기 사이 즉 컴퓨터끼리 또는 컴퓨터와 단말기 사이 등에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속 즉, 통신의 규약을 의미한다. 뭔가 데.. 2022. 1. 23.
[BOJ] SISS 겨울방학 스터디 - 4주차 #2675 [문제] [코드] #include int main() { int T, R; char str[20]; scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%d %s", &R, str); for (int j = 0; str[j] != '\0'; j++) { for (int k = 0; k < R; k++) printf("%c", str[j]); } printf("\n"); } return 0; } [설명] 테스트케이스 T, 반복 횟수 R을 정수로 선언하고 입력받을 문자열 str을 크기가 20인 문자열 배열로 선언한다. 테스트케이스를 입력받고 입력받은 테스트케이스 수 만큼 반복하여 R과 str을 입력받도록 한다. 입력받은 str의 처음부터 끝까지 한번씩 .. 2022. 1. 22.
[Dreamhack System Hacking] STAGE 2 [Computer Architecture] 1. 컴퓨터 구조 1) 컴퓨터 구조 - 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 이들을 구성하는 방법 - 컴퓨터 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 포함 2) 컴퓨터 기능 구조에 대한 설계 - 효율적인 연산을 위해 컴퓨터에 필요한 기능들을 고민, 설계하는 분야 - ex. 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 3) 명령어 집합구조(CPU 명령어에 대한 설계) - CPU가 처리해야하는 명령어 설계하는 분야 - ex. ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등 2. 폰 노이만 구조 1) 컴퓨터의 핵심 기능 - 연산, 제어, 저장.. 2022. 1. 16.
[XSS Game] Level 4 이번 문제도 단순히 스크립트를 삽입하여 자바스크립트 alert를 띄우라고 하고 있다. 주어진 것은 이렇게 생긴 화면과 Create timer를 누르면 타이머가 작동되는 기능이다. 아래에 타이머가 있어서 시간을 5초로 바꿔서 작동시켰더니 url 맨 끝에 ?timer=5가 붙는 걸 확인할 수 있었다. 이번에도 소스코드를 확인해보았는데 잘 모르겠어서 힌트를 참고해보았다. 힌트 1번에 startTimer 함수가 어떻게 호출되는지를 잘 봐보라고 하고 있다. 소스코드에서 startTimer가 사용되는 부분을 찾아보았다. 이 부분과 다른 부분을 보니 시간을 입력하는 창의 입력 값이 timer라는 id 값을 가지고 이를 onload에 가져와서 사용된다는 것을 알 수 있었다. 위의 코드를 참고하여 startTimer 함.. 2022. 1. 14.
[XSS Game] Level 3 이전 단계의 문제들처럼 스크립트를 삽입해서 자바스크립트 alert 팝업을 띄우라고 한다. 하지만 입력을 할 수 없기 때문에 url 주소창을 수정하라고 이야기하고 있다. 실제로 화면을 보니 값을 입력하는 데는 없었고 오로지 주소창만 수정 가능했다. 그리고 이미지 1, 2, 3 창을 넘나들 때마다 url위의 숫자가 1, 2, 3으로 바뀌는 것을 확인했다. html += ""; 일단 아무것도 없는 상태에서 고민을 하다가 스크립트 태그에 alert를 넣어서 해보았는데 역시나 작동되지 않았다. 잘 모르겠어서 소스코드를 살펴보다가 위의 코드를 발견했다. 아까 이미지 1, 2, 3을 왔다갔다 할 때마다 url 뒤에 있는 숫자가 바꼈었는데 이를 통해 그 수가 위의 코드의 num에 해당하는 값일 거라고 예상했다. 저 i.. 2022. 1. 14.
[BOJ] SISS 겨울방학 스터디 - 3주차 #2475 [문제] [코드] #include #include int main() { int num[5], sum = 0; for (int i = 0; i < 5; i++) { scanf("%d", &num[i]); sum += pow(num[i], 2); // math 헤더파일 미포함 시 num[i] * num[i]로 대체 가능 } printf("%d\n", sum % 10); return 0; } [설명] 입력 받을 숫자 5개를 저장할 배열 num과 이 숫자들의 합 sum을 정수로 선언한다. 반복문으로 각 숫자들을 입력 받아 배열에 저장하고 저장할 때마다 sum에 num[i]를 제곱한 값을 더해준다. 여기서, math 헤더파일을 포함해준 경우에는 pow 함수를 이용하고, 아닌 경우에는 num[i]*nu.. 2022. 1. 14.
[생활코딩] DATABASE - MySQL 정리 생활코딩 DATABASE - MySQL 2강 ~ 20강 정리 1. 데이터베이스 - 데이터를 표의 형태로 표현 가능 - 컴퓨터 언어를 통해 데이터를 제어 가능 - MySQL은 관계형 데이터베이스 - 권한 기능이 있어서 사용자에 따라 권한 설정 가능 2. MySQL 접속 (1) MySQL 설치했을 때 1) MySQL start 2) terminal 열고 아래의 명령어 입력 (-uroot : root라는 사용자로 접속하겠다는 의미) ㄴ root는 모든 권한이 열려있기 때문에 데이터베이스 직접 다루는 건 위험 (-p : 아래로 비밀번호를 물어보게끔 함) password에는 처음에 설정된 비밀번호를 입력해주면 된다. 내 컴퓨터에서도 해보려고 했는데 아무리 찾아도 mysql 폴더가 안 보여서 나중에 다시 찾아보기로.. 2022. 1. 9.
[BOJ] Bronze Ⅴ, IV - Day 13 사용 언어 : Python 푼 문제 #21300 [Python] a, b, c, d, e, f = map(int, input().split()) result = (a + b + c + d + e + f) * 5 print(result) #22193 [Python] N, M = map(int, input().split()) A = int(input()) B = int(input()) print(A * B) 파이썬으로 하면 간단한데 C로 하면 꽤나 복잡할 듯한 문제... 시간 나면 C로 다시 풀어볼 것!! #23234 [Python] print("The world says hello!") #1008 [Python] A, B = map(int, input().split()) print(A / B) #1297 .. 2022. 1. 9.
[XSS Game] Level 2 문제를 읽어보니 저번 단계와 마찬가지로 스크립트를 삽입하여 alert 팝업창을 띄우라고 한다. 일단 Level 1에서 했던 것과 마찬가지로 스크립트를 넣어보았는데 아무것도 출력되지 않았다. 이를 통해 스크립트 태그를 필터링하고 있다는 것을 확인할 수 있다. 검색을 통해 스크립트 필터링을 우회할 수 있는 방법을 찾아보니 몇가지 방법이 있었다. 처음엔 스크립트 태그의 대소문자를 바꿔서 삽입해보았지만 똑같이 아무것도 출력되지 않았다. 두번째로는 onerror를 사용해보았다. 저 코드를 해석해보면 none.jpg라는 파일이 없을 시 alert 팝업이 뜨며 괄호 안의 내용을 출력한다는 내용이다. 참고해온 곳에서 그대로 가져와서 document.domain이라 입력했었는데 이것 대신에 아무 내용이나 적어도 상관없다.. 2022. 1. 9.