이 친구도 그다지 복잡하지 않은 친구이다. 역슬래시로 id 영역의 싱글쿼터를 벗어나는 방법은 WAF(Web Application Firewall)에 걸리지 않는 것 같다. Blind SQL Injection 형식의 문제이니 pw를 모두 구해야 한다. 우선 길이부터 구하자. id=\&pw= or id="admin" and length(pw)>'0 아주 예쁘게 나온다. 이후에는 pw를 구하는 코드를 짜면 될 것 같다. pw를 구하는 payload 구성 방식에는 다음과 같은 방식들이 있을 것이다. substr 함수를 사용 pw like "X%" - like문과 와일드카드 이용 pw rlike "^X" - 정규표현식과 rlike 이용 bin(ord(substr())) 함수를 이용 - 2진수로 검색 이번에는 그냥..
갑가지 WAF를 우회할 수 있겠냐고 묻는다. 진짜 쫄았다. Web Application Firewall 은 웹 서비스와 주고 받는 트래픽들을 필터링 및 감시, 차단하는 방화벽의 한 형태라고 한다. 근데 뭐 필터링도 뭐 없고 문제도 너무 간단해 보이길래 몇가지 공격을 해보았더니 2~3회만에 뚫렸다. 공격에 실패하여 방화벽에 막히면 다음과 같은 화면으로 exit 되는 것 같다. 성공한 payload 는 별것 없다. 그냥 역슬래시를 사용하여 가운데를 통채로 날리면 된다. 예전에 있던 문제 유형이다. id=\&pw= or 1%23
Ouroborus. 아래 내가 그림판으로 그린 작품처럼 생겼다. "꼬리를 삼키는 자"로 통한다고 한다. 과연 이번에는 무슨 문제일까. 코드를 보면 딱히 구체적인 필터링은 사용하고 있지 않다. 사용할 수 있는지는 모르겠지만, 풀려있는 무기들이 많다. 이후에 query 문의 where 부분이 참값이 될 경우, 화면에 'Pw : ...' 를 띄우는 것 같다. 우선 테스트를 몇개 해보자. pw=' or 1%23 아무런 반응이 없다. table에 아무런 데이터가 존재하지 않는 것 같다. 지난번에도 table에 데이터가 존재하지 않았던 문제가 있었다. 이때는 union 을 통하여 데이터를 새롭게 전달해주어야 한다. pw=' union select 1%23 우선은 출력을 하는 데에 성공하였다. 하지만 문제가 하나 더..