[+] Security [+]
-
[CrackUs] LEVEL 7[+] Security [+]/CrackUs 2020. 7. 17. 15:07
다음문제 LEVEL 7! 두둥! 필자는 처음 CrackUs에 접했을때 7번 문제에서 몇일동안이나 잡혀있었던 적이 있다. 그러던중 에라 모르겠다 하는 심정으로 1 부터 10000까지 무차별적으로 대입하다가 5045 에서 문제가 풀리는 기적을 경험한 적이 있다. 아직도 잊혀지지 않는군... 5045! 우선 들어가기 앞서, 해시란 무엇일까? 암호화 기법이다. 내가 입력한 비밀번호를 서버 운영자도 모르게끔 잘 감춰놓는 수단이다. 해쉬값을 사용하면 최악의 경우 해커가 DB를 조회하더라도 원본 비밀번호를 알 수 없고 복호화하기도 어렵다. 하지만 해싱되기전 원본 비밀번호를 안다면 게임은 끝이다. 해쉬함수를 통해 그저 encypt 하기만 하면 그게 암호문일 테니까 위의 문제에서는 crackus 라는 평문을 알려주고 있..
-
[CrackUs] LEVEL 6[+] Security [+]/CrackUs 2020. 7. 16. 10:06
LEVEL 6 달걀 문제! 필자는 달걀을 몹시 좋아한다. 밥 위에 얹어도 좋고 삶아도 좋고, 많이 익히든 적게 익히든 어떻게 먹어도 맛있고, 설탕을 뿌려 먹어도 좋고 소금을 쳐서 먹어도 좋고 정말이지 달걀의 가능성은 인간의 가능성보다 더 무궁무진하다. 암 그렇고말고, 뭐 어쨌거나 문제를 살펴보자. 이번에는 if(preg_match('/\||#|;|-/i', $id)){ exit("Query is filtered :( ");} if(preg_match('/\||#|;|-/i', $pw)){ exit("Query is filtered :( ");} | # ; - 를 막아 놓았다. 이전 문제에도 언급했듯이 | 는 or 와 같이 막아놓은게 아니라면 의미없다. 즉 or 는 살았다. 그 다음은 # ; - 인데 주석..
-
[CrackUs] LEVEL 5[+] Security [+]/CrackUs 2020. 7. 16. 09:44
다음 LEVEL5 문제! 이번엔 특별히 pw를 입력받지 않는다. 또한 or admin # 이 필터링 되어있고, id 가 admin이라면 해결할 수 있다. 세상에나 admin을 필터링 해놓고 admin을 어떻게 찾아오라는 것인가! 하지만 공격 방식은 다양하게 존재한다. 우선 or는 || 로 우회할 수 있다. or 와 || 를 동시에 막아놓은게 아니라면 or 필터링은 유명무실하다. 또한 #을 막아놓았으나 #을 대체할 수 있는 주석 우회가 여럿 있다. 또 가장 중요한! 따옴표를 막아놓지 않았다. 즉 자의적으로 쿼리를 닫고 추가 생성해낼 만한 여지가 다분하다. 헥사 값을 이용하여 해결 할 수도 있고 concat을 사용하여 해결 할 수도 있다.
-
[CrackUs] LEVEL 4[+] Security [+]/CrackUs 2020. 7. 16. 08:57
다음 LEVEL 4 문제 이번에는 LEVEL 1 문제에서 if(preg_match('/\'|\"/i', $id)){ exit("Query is filtered :( ");} if(preg_match('/\'|\"/i', $pw)){ exit("Query is filtered :( ");} 이 두 부분만 추가된 형태다. 즉 따옴표를 쓰지 말 것! 아니 그럼 따옴표를 쓰지 않고 어떻게 풀어야하나!! 해답은 이스케이프! id='' and pw='' 형태의 쿼리에서 id 값에 역슬레쉬를 넣게되면 뒤에 이어지는 '(따옴표)가 문자열 안에 포함되어 진다. 즉 id는 \' and pw= 가 되는 셈이다. 정말 기발하지 않은가??? 대체 누가 처음 생각해낸건지... 이렇게 문제를 해결할 수 있다! 비슷한 유형의 다른 ..
-
[CrackUs] LEVEL 2[+] Security [+]/CrackUs 2020. 7. 16. 08:28
LEVEL 2 문제! 들어가보자! 패스워드를 해싱하여 DB에서 찾는다. ID 값이 'admin'이면 패스할 수 있고, 그외의 별다른 필터링은 없다. 주석을 이용하여 pw 부분을 날려버리자! 어예! 2번문제 해결! 비슷한 유형의 다른 문제 [Lord of SQLInjection] #2 cobolt 2번문제! pw를 md5('') 해시 함수로 암호화 하여 데이터 베이스와 조회하는 듯 하다. 또한 if($result['id'] == 'admin') solve("cobolt"); 구문을 보아하니 id 값이 admin이어야 하는 듯하다. 1번문제에서 풀.. devjounal.tistory.com
-
[CrackUs] LEVEL 1[+] Security [+]/CrackUs 2020. 7. 16. 08:24
존경하는 학교 선배님께서 워게임 사이트를 만드셨다. 그 이름하야 CrackUs! http://crackus.jeju.kr/quiz.php http://crackus.jeju.kr/main.html 자매품 : KCR PKT HSH --> Enter to the CrackUs' game! crackus.jeju.kr 높으신 선배님께서는 SQL Injection 교재도 집필하셨는데, 그 실습을 위의 사이트에서 할 수 있다. https://ridibooks.com/books/2773000024 실습으로 배우는 SQL injection Web Application Server 에서 사용자가 입력한 값이 충분히 필터링 되지 않은 Query 를 Request 할 시에 보안 위협들을 이해할 수 있도록 설명하고 있습니다..