분류 전체보기(363)
-
[wargame.kr] strcmp 풀이
소스코드를 보니 바로 보이는 게 있네요. // do not brute force!라고 되어있는 걸 보니, sleep(1); 때문에 브포는 안될 것 같습니다. 그럼 다른 풀이법을 생각해봅시다. 우선, 가장 중요한 password는 랜덤으로 가져오게 됩니다. strcmp() 함수를 실행해서 결과값이 0일 경우(같을 경우)에 FLAG를 출력해줍니다. 사실 처음에는 어떻게 풀어야 할지 감이 오지 않았지만, 구글링을 해보니 strcmp() 함수에 취약점이 있었습니다. strcmp로 비교를 할 때 인자값에 배열이 들어가면 NULL이 나오게 됩니다. 그러므로 html 코드에 있는 name="password"을 name="password[]"로 바꿔주고 아무 값이나 보내주면 될 것 같습니다.
2022.01.06 -
[wargame.kr] login filtering 풀이
소스코드 제일 아래에 있는 아이디랑 비번?처럼 보이는 것을 써서 로그인부터 해보겠습니다. you have blocked accounts. 라고 써져있는 걸 보니 사용할 수 없는 계정인가 봅니다. blueh4g / blueh4g1234ps 계정도 마찬가지였습니다. 이제 페이지가 어떻게 작동하는지 알았으니, 본격적으로 소스코드를 해석해보겠습니다. 코드의 윗부분은 문제 풀이에 그다지 도움되지 않는 부분이니, 설명은 생략하도록 하겠습니다. 여기 있는 if문이랑 sql구문이 중요해 보입니다. 차근차근 분석해보겠습니다. id가 존재할 때, id가 guest 또는 blueh4g라면 "your account is blocked"를 출력해줍니다. 아니라면 "login ok"를 출력해주고 FLAG를 출력해줍니다. id가 ..
2022.01.01 -
2021 비버챌린지 그룹VI(고1~3) 문제 풀이
타일을 네 개씩 붙여봤는데, C번 타일만 이음새가 맞지 않는 걸 확인할 수 있었습니다. 정답) C번 1번과 2번은 표를 보고 판별하면 됩니다. 그리고 3번과 4번은 임의의 문자열을 만들어서 직접 시뮬레이션해보면 바로 풀리는 문제입니다. [1번] 현재 문자가 1일 때 문자를 2로 바꾼다. 현재 문자가 1인 경우를 보면 다 _(공백)으로 바꾸기 때문에 틀린 선지 [2번] 현재 문자가 2인 경우에 문자를 1로 바꾼다. 현재 문자가 *(ALL)인 경우를 보면 *(ALL) 혹은 _(공백)으로 바꾸기 때문에 틀린 선지 [시뮬레이션] 임의의 문자열 S를 만든다. S=00100 1. 00100, 현재 상태 0 2. 00100 -> 00100, 현재 상태 0 3. 00100 -> 00100, 현재 상태 0 4. 0010..
2021.11.29 -
You are silver 풀이
이번 문제는 실행하자마자 세그먼트 폴트가 떴습니다. 우선 코드 분석부터 하겠습니다. 처음 main() 함수에서 fgets() 함수로 46 길이의 문자열을 입력받습니다. 그리고 printf(&s)로 입력받은 문자열을 출력하는데, 이 부분에서 FSB가 발생한다는 걸 알 수 있습니다. 그리고 get_tier() 함수에 인자로 v6의 초기값인 50을 넣어주고, 그 반환 값을 v5에 저장합니다. get_tier() 함수는 조건 분기문으로 사용자의 티어를 판별해주는 함수입니다. 인자가 50으로 들어왔으니 "You are silver"를 출력하게 되고, 1을 리턴해줍니다. 다시 main() 함수로 돌아오면 v5의 값(1)을 주소로 하는 값을 출력하도록 되어있습니다. 그렇기에 이 부분에서 세그먼트 폴트가 발생하게 되고..
2021.11.22 -
Carve Party 풀이
click the pumpkin to make a jack-o-lantern! 10000 more clicks to go! 위에 나오는 코드는 페이지에 들어가서 개발자 도구로 연 JS 코드입니다. 만 번을 클릭하면 FLAG가 나오는 형식인 것 같습니다. 만 번을 다 클릭할 수는 없으니 개발자 도구 콘솔 창에서 JS 코드를 실행시키겠습니다. make() 함수에서 호박을 지칭하는 것을 찾아보니 '#jack-target'이였습니다. while문으로 이 부분을 9999번 클릭하게 만들고 마지막 한 번은 직접 눌러보겠습니다.
2021.11.18 -
dreamhack-tools-cyberchef 풀이
뭔가 인코딩 된 것 같은 문자열이 보입니다. 아래에 암호를 만든 절차가 나와있는 것 같습니다. 그렇다면 이를 거꾸로 해서 Base64 -> Rail Fence로 디코딩하면 원래의 문자열인 FLAG가 나올 것 같습니다.
2021.11.18