LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 문자열 길이에 제한이 걸려 있는 것으로 보인다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['id']) solve("nightmare"); strlen 함수로 pw 길이가 6글자를 넘어가지 못하게 막혀있는 것을 확인할 수 있다. 그리고 특이한 것은 id != admin 이면서 pw를 검사하고 있고, 풀이를 위해서는 id 값이 들어가야하는 것이다. 당연히 아무런 반응이 없는 것을 확인할 수 있다. 또한, preg_match 함수로 #과 - 각 주석처리에 대해서 필터링 처리 되어 있는 것을 확인할 수 있다. 생각해볼 수 있는 것이 1) 6글자를 넘지 않는 페이로드이면서 2) #과 - 이외의 주석처리를 진..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 함수가 추가된 것을 확인할 수 있다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['id']) solve("zombie_assassin"); 이번 문제에서는 strrev() 함수와 이전 문제들에서 자주 보였던 addslashes 함수가 등장하는데, addslashes 우회는 알고 있기 때문에 strrev에 대해서 찾아보도록 하자. https://www.php.net/manual/en/function.strrev.php PHP: strrev - Manual It's faster and flexible than tianyiw function (comment #122953) www.php.net 해당 공식문..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['id']) solve("succubus"); id만 존재하면 간단하게 풀리는 것으로 보이는데, id와 pw에 각각 싱글쿼터에 대한 필터링이 걸려있다. 그런데, 어디서 많이 본 구문이라고 생각이 들었다. 이전 문제에서 참고한 글 중에 해당 하는 내용과 비슷한? 동일한? 페이로드로 되어있는 것이다. 제한적인 구문 안에서 사용이 가능한데, 한번 바로 시도해보도록 하자. id=\&pw= or 1 # 다음 구문을 GET 방식으로 파라미터에 넣어주게 되면, 쉽고 빠르게 풀 수 있게 된다. 해당 페이로드는 싱글 쿼터를 우회하는 내용으로 백슬래쉬 \ 를 id 인자로 넘겨..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. pw에 간단하게 싱글쿼터 필터링이 걸려있는 듯하다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['id'] == 'admin') solve("assassin"); 간단하게 admin 값을 넣어주면 풀리는 문제인데, 싱글쿼터가 필터링으로 걸려있고 해당 구문에서는 = 연산자와 동일하게 적용되는 like 구문을 이용하고 있다. 즉, where pw='{$_GET[pw]}' 와 동일하다고 생각하면 된다. 그러면 지금까지 해왔던 문제들과 똑같지 않은가! 라고 생각하기에는 싱글쿼터 필터링이 있기 때문에 우리가 조작하려고 하는 페이로드가 먹히지 않게 된다. 그렇다면 어떻게 해야할까? 이전 문제와 동일한 참고 글을 ..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 앞서 푼 문제들이랑은 다른 쿼리문으로 되어있다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result[1234]) solve("giant"); 공백, \n, \r, \t 에 대한 필터링이 걸려있고, 앞선 문제들과 다르게 from과 prob_giant 라는 테이블에서 1234가 조회될 수 있도록 만드는 문제로 보인다. 또한, strlen 함수로 길이에 대해서도 우회해야할 것이다. 결국 공백을 우회해야하는 문제인데, 앞서서 공부했던 내용들과 마찬가지로 공백문자를 우회하는 방법으로는 다음과 같다. (rubiya님 참고: https://www.hackerschool.org/Sub_Html/HS_Posting/?uid=..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 이전처럼 필터링이 걸려있는 문제는 맞는데, 필터링 문자열이 한 2배로 늘어난거 같은데요..? ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("bugbear"); 이번에도 pw를 알아내야하는 문제로 이전 문제들과 동일하게 Blind Sql Injection을 시도하면 될 것 같다. 문제는 이전과 다르게 싱글쿼터, substr, ascii, =, or, and, 공백, like, 0x를 필터링 하는 것을 확인할 수 있는데 이전 문제와 동일한 페이로드에서 앞서 필터링 걸려있는 문자열들만 조금 수정해서 페이로드를 수정하면 될..