본문 바로가기

Write Up

(11)
los goblin[3번] 문제다. 이번에는 id를 guest로 고정시켜뒀는데 문제풀이 조건이 id==admin이다. if($result['id'] == 'admin') solve("goblin"); 그렇다면 id='guest'를 무력화 시켜줘야한다. no에 1을 넣어주고 id를 admin으로 바꿔줬다. 근데 여기서 ' " `가 막혀있다. 그래서 char로 우회해주기로 했다. ?no=1 or id=char(97,100,109,105,110) 으으음... guest다. 왜 guest가 출력되는지 생각해보면 id=guest가 무력화되지 않았기 때문일것이다. 그 말은 즉 guest의 no가 1이라는 것이다. 그렇다면 guest의 no일 가능성이 거의 없는 숫자를 쿼리에 넣으면 id=guest가 무력화 될것이다. (사실 처음부터 2535..
los cobolt[2번] 2번입니다. 바로 시작하죠 으으음... 이번에는 if($result['id'] == 'admin') 을 만족시켜야 문제가 풀리는군요. pw는 md5로 해싱되어있습니다. 어떻게하면 해시를 뚫지 고민해보니 굳이 pw를 참으로 만들 필요가 없다는 것을 알았습니다. solve() 조건을 보면 id=admin이면 됩니다. pw는 상관 없다는 것이죠. 즉 ?id=admin'%23 을 쿼리에 넣어주면 뒤에 있는 pw구문이 주석처리 되면서 id가 admin이게 되고 문제가 풀립니다.
los gremlin[1번] 바로 시작하겠습니다. 문제입니다. 제가 php를 잘 몰라서 그냥 뇌피셜로 코드를 해석했습니다. preg_match()를 구글링 해보니 문자열을 찾는 함수라고 합니다. 즉 preg_match()안에 있는 문자열을 사용하면 No Hack이라고 종료되는 것을 볼 수 있습니다. 그 다음 id와 pw를 입력받습니다. 문제를 어떻게 풀 수 있을지 생각해보니 if($result['id']) solve("gremlin"); 이 if문이 보이더군요. id의 결과값이 참이면 된다는 것입니다. id='{$_GET[id]}' and pw='{$_GET[pw]}'"; id의 값을 정해주는 줄을 보니 and 연산자 때문에 입력받는 id와 pw의 값이 모두 참이여야 됩니다. ?id=1&pw=1 일단 이렇게 id와 pw에 아무값이나..