LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if(($result['pw']) && ($result['pw'] === $_GET['pw'])) solve("ouroboros"); 패스워드만 찾아내면 되는 간단한 문제라고 생각이 들기에는 단계가 높아진 상태인데, 페이로드를 다 넣어봤지만, 아무것도 되는게 없었다. 이번에는 union 필터링이 없으니까 한번 넣어보았다. 단서를 하나 얻었다. 조회를 하게 되면 pw 값이 내가 입력한 select 1이 출력되는 것을 확인할 수 있는데 이는 위에서 본 것처럼 pw가 존재하지 않기 때문이다. 그렇다면, pw 값을 입력($_GET['pw'])하면서 동시에 $result['pw']와 어..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 지금까지 본 문제 중에서 가장 긴 코드인 것 같다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if(($result['email']) && ($result['email'] === $_GET['email'])) { mysqli_query($db,"delete from prob_phantom where no != 1"); solve("phantom"); } 보이지 않는 이메일을 입력하면 되는 문제로 보인다. 해당 이메일을 입력하면 no가 1이 아닌 것을 삭제하면서 solve가 되는데.. 일단 joinmail을 받을 때, duplicate 라는 문자열을 필터링 하는 것으로 보이고, insert into 에 해당하는 삽입을 하..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("frankenstein"); pw를 알아내야 풀리는 문제로 보인다. 현재 아이디가 frankenstein으로 설정되어 패스워드를 받고 있고, union 구문과 괄호가 필터링으로 걸려있다. 하나의 힌트로는 db 에러가 발생하였을 때, error라는 exit 하게 되는데 이것을 바탕으로 Error Based Sql Injection을 시도해보면 좋을 것 같다. 현재 필터링 된 괄호는 case 구문으로 우회하는 방법이 있다고 한다. 다음과 같이 case 구문을 활용하여 sql..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 여러 필터링이 걸려있는 모습이다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("blue_dragon"); 패스워드를 찾아야하는 문제로 보이고, id와 pw 값에 싱글쿼터와 백슬래쉬에 대한 필터링이 걸려있는 것으로 보인다. ???? 아무 생각없이 guest, guest 집어넣었는데 갑자기 일치했다.. 이걸 노리고 한게 아닌데,, 패스워드는 복잡하게 만들것,, 아무튼 앞서서 푼 문제들 중에서 해결할만한 방법이 쉽게 떠오르지 않아서 여러 sql injection 페이로드를 찾아보던 중 sleep을 활용한 time bas..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 주석으로 컬럼명을 확인하라는 내용도 달려있다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['no'] === $_GET['no']) solve("red_dragon"); no라는 것은 예상으로는 번호를 의미하는 것 같다. 번호가 일치하게 되면 즉, admin 번호를 입력하면 문제가 풀리게 된다. strlen 함수로 id 길이가 7 이상이면 exit 구문이 실행되므로 참고하도록 한다. 간단하게 id에 guest를 넣으면 아무것도 뜨지 않는다. no의 번호와 일치하지 않기 때문일 것이다. guest' #을 넣게 되면 strlen 함수에 걸리게 된다. 이전 문제에서 시도했던 union select 1, 2 ..
LOS : https://los.rubiya.kr/ ✔️ 문제 문제는 다음과 같다. 이전 order by에서 벗어나 이번에는 예전 문제들과 비슷하게 보인다. ✔️ 풀이 풀이를 위한 코드는 다음과 같다. if($result['id'] == "admin") solve("green_dragon"); 코드는 다음처럼 간단하지만, 예전 문제들과 다르게 코드의 양이 증가하였고 그만큼 복잡성도 올라간 것으로 보인다. 1) 일단 필터링에 온점, 싱글쿼터, 더블쿼터가 걸려있다. 2) id 결과가 존재하면, if문 내의 query2로 동작하게 된다. id와 pw를 둘 다 입력받을 수 있을때 사용할 수 있는 우회가 존재한다. 일단 어떠한 것이든 시도해보자. 이전 succubus 문제처럼 역슬래쉬를 활용해서 id 내 값을 문..