web(98)
-
skeleton 풀이
id가 admin일 때 문제가 풀립니다. 현재 id는 guest인데, 그렇다면 pw 부분에서 id를 admin으로 변조하는 형식으로 문제를 풀어야 할 것 같습니다. 그런데 $query 부분을 보면 and 1=0이라는 구문이 적혀있습니다. 이 말은 즉슨, 맞는 쿼리문을 작성하더라도 전체 쿼리문이 false로 바뀐다는 뜻입니다. 그럼 이 부분은 주석처리를 하겠습니다. DB에서 사용되는 주석은 #, --, /**/의 세 가지가 있습니다. 저는 #이 사용하기 편하니 #을 사용하도록 하겠습니다. (#을 URL Encoding 하면 %23, '은 %27이 됩니다.) 그러면 쿼리문에 '||id='admin'#을 URL Encoding 한 형식으로 작성해주겠습니다. pw=%27||id=%27admin%27%23 and..
2021.08.22 -
vampire 풀이
코드 분석을 해보면 id가 admin일 때 문제가 풀립니다. 하지만 str_replace() 함수를 이용해서 id에 "admin"이 들어가 있으면 NULL 값으로 치환합니다. 어디선가 많이 본 패턴입니다! 이 문제의 의도는 "str_replace() 함수의 취약점을 이용하여 문제를 풀 수 있는가?"인 것 같습니다. 쿼리문에서 id 변수에 값을 줄 때 admin이 한 번 필터링 되더라도 admin이라는 문자열이 완성되도록 값을 주면 문제가 풀릴 것 같습니다. adadminmin 이렇게 값을 주면 밑줄이 쳐진 부분이 필터링 되더라도 남은 문자열이 합쳐서 admin이 되므로 문제가 풀립니다. 이전 문제보다 훨씬 간단하네요.
2021.08.21