본문 바로가기

챌린지

bughela - DB is really GOOD wargame.kr의 9번째 문제인 DB is really GOOD이다. 문제 힌트에서는 이 데이터베이스의 종류와 유저 이름과 데이터베이스 간 관계를 파악하라고 되어있다. Start 버튼을 눌러 문제를 확인해보자. 간단한 입력폼과 로그인 창이 뜬다. 따로 소스를 보여주는 링크도 없고 HTML을 확인해봐도 자바스크립트로 입력값 admin을 제한할 뿐 별다른 기능은 없다. 그렇다면 admin을 입력해보면 어떻게 될까? 일단 첫번째로 admin으로 접근하지 말라는 간단한 alert() 메시지가 뜬다. 소스 코드를 확인해보면 이 입력폼은 "/memo.php"라는 곳으로 데이터를 보내고 있기 때문에 웹 프록시로 중간에 값을 admin으로 수정하거나 Postman을 활용하여 admin 데이터를 전송해보자. 그래도 .. 더보기
Lord of SQLInjection - wolfman 다섯번째 문제인 울프맨이다. 더보기
bughela - md5 password wargame.kr의 8번째 문제인 md5 password다. md5는 해시 함수의 일종으로 결함이 발견되는 등 여러 문제로 인해 사용하지 않는 추세라고 알고 있다. 물론 많이 사용되던 해시 함수인 만큼 여러 프레임워크에서 내장 함수로 구현되어 있는데 php의 경우 md5() 함수로 구현되어 있다. 그런데 이를 문제의 힌트에서 알려주는 이유는 무엇일까? 일단 Start 버튼을 눌러 문제를 확인해보자. 문제는 단순한 입력폼 하나만 주어진다. 아무 값이나 넣어서 login을 시도해보면 "wrong..."이라는 문자열이 출력될 뿐 별다른 변화가 없어 자세한 정보를 얻을 수 없다. 일단 get_source를 눌러서 소스를 한번 확인해보자. 더보기
Lord of SQLInjection - orc 네 번째 문제인 오크다. 더보기
bughela - strcmp wargame.kr의 7번째 문제인 strcmp다. 이번 문제는 strcmp 함수를 우회하는 것이 목적이다. Start 버튼을 눌러 문제를 확인해보자. 간단한 입력폼 하나와 소스 코드를 보는 링크가 있다. POST로 비밀번호를 보낸다는 것 말고는 얻을 수 있는 정보가 없으니 소스를 분석해보자. $password를 생성한 후 if 조건문을 타고 있는데 위의 분기는 소스 코드를 보여주는 동작이므로 아래쪽을 보면 된다. 브루트 포스 방지를 위해 1초간 대기한 후 사용자가 입력한 password 값과 생성된 $password가 같은지 비교하여 플래그를 제공하고 있는데, 그렇다면 $password는 어떻게 생성되는지 알아보자. 이런저런 함수를 호출하고 있지만 결론부터 말하자면 이는 절대로 사용자가 예측할 수 없도.. 더보기
Lord of SQLInjection - goblin 세 번째 문제인 고블린이다. 더보기
bughela - fly me to the moon wargame.kr의 6번째 문제인 fly me to the moon이다. 이번 문제는 HTTP 패킷을 분석하는 능력이 요구된다. 자바스크립트 게임에서 특정 스코어를 달성해야 플래그를 얻을 수 있는 문제다. 치트 방지 시스템을 우회하라고 되어있는데 자세히 알아보기 위해 Start 버튼을 눌러 플레이해보자. 화면 가운데에 위와 같은 간단한 게임이 제공된다. 일단 어떤 게임인지 알아보기 위해 클릭해서 플레이하면 오른쪽 그림과 같이 구불구불한 막대를 피해서 달리는 일종의 레이싱 게임인 것을 알 수 있다. 만약 벽에 닿아서 죽으면 위와 같은 메시지와 함께 게임이 종료된다. 설명을 읽어보면 31337점을 달성해야 한다고 하는데 점수는 1초에 약 5점씩 올라가므로 이를 달성하려면 6000초, 약 100분은 이 게임.. 더보기
Lord of SQLInjection - cobolt 지난번 그렘린에 이어 이번에는 코볼트 문제다. 지금 보니 문제 이름들이 다 판타지스러운 명사들로 구성되어 있는데 SQL Injection 던전같은 느낌이 난다. 문제를 살펴보자. 더보기