본문 바로가기

전체 글492

Lord of SQL Injection 6단계, darkelf 풀이 이번 포스팅은 load of sql injection 6단계인 다크엘프 풀이이다. 여지없이 바로 코드로 넘어가보자! 사실 전 단계인 블라인드 인젝션이 조금 어려웠지 이번 문제는 그닥 어려운 문제는 아니다. 여기서 가장 핵심이 되는 코드를 보자. preg_match를 통해 or 과 and 는 막혀있다. 하지만 문제를 풀려면 쿼리문을 끊고 or로 id값을 admin으로 줘야하는 상황이다. sql 인젝션 구문을 어떻게 작성해야 할까? 더보기 ?pw=' || id='admin'%23 or 는 || 와 같은 뜻이고, and는 &&와 같다! 이 간단한 것만 알고 있다면 이 문제는 쉽게 풀렸을 것이다. 2019. 10. 29.
Lord of SQL Injection 5단계, wolfman 풀이 이번 포스팅은 늑대인간 편이다! 빠르게 코드부터 살펴보자. 여기서 눈여겨 볼 코드는 이 코드! preg_match를 통해 whitespace, 그러니까 공백은 여기서 막아놨다. 우회를 어떻게 진행해야 할까? 우선 기본적으로 pw값을 id='guest' 의 값과 함께 거짓이 되게 만든다. ?pw=123' or id='admin'%23 원래 같았으면 이렇게 푸는 것인데, 공백이 막혔으므로 이것저것 시도해본다. 첫번째로 내가 시도해 본것은, %20 ! 그러니까 아스키코드 값을 가지고 시도해본 것이다. 물론 이렇게 쉽게 풀릴리가 없당 막혔당 헤헤 다음으로 시도해본 것은 탭! 탭의 아스키코드값 9를 가지고 %09를 통해 시도해본다. 더보기 ?pw=394'%09or%09id='admin'%23 클리어! 2019. 10. 29.
Lord of SQL Injection 4단계, orc 풀이 3단계 고블린에 이어 4단계 orc 풀이를 들어가겠다. 사실 이 문제는 blind injection을 이용해 푸는 문제인데, 나는 잘 몰라서 인터넷의 힘을 빌렸다. 다른 사람들은 blind injection을 쉽게 푸는 프로그램을 파이썬으로 작성하던데 나는 파이썬을 몰라서 노가다로 풀었다. 문제를 푸는데 핵심적인 역할을 하는 쿼리문부터 살펴보겠다. 쿼리문의 조건문을 보면 id='admin'이고, 우리가 임의로 변경할 수 있는 변수인 pw가 있다. if (($result['pw']) && ($result['pw'] == $_GET['pw'])) solve ("orc"); 문제를 해결하려면 데이터베이스에 id가 admin 인 pw값을 우리가 알아야한다. 자, 문제는 그걸 어떻게 알 수 있느냐! 다음 아래의 .. 2019. 10. 29.
Lord of SQL Injection 3단계, goblin 풀이 자 이번엔 3단계. 고블린 풀이다! 고블린이 어떻게 생겼는지 잘 모르고 있었는데, 신기하게 생겼다...! 아무튼 빠르게 코드부터 읽어보자. 그 전단계들과는 다르게, preg_match를 통해서 exit로 이어지는 구문이 하나 더 생겼다. ' 와 " , 그리고 ` 는 쓸 수 없다고 한다. 처음에 저걸 몰라서 헤맸다. 그리고 내가 의문이었던 것은, id가 guest로 고정이 되어있다는 점이었다. 문제를 해결하려면 id값이 admin이 되어야 하는데, 보이는 것과 같이 쿼리문에는 guest로 id값이 고정되어있다. 자, 데이터베이스 구문의 연산자를 잘 생각해보자. 자, 이 쿼리문에서 id=admin이라는 것을 표현하려면 어떻게 해야할까? 답은 생각보다 간단하다. no의 값을 거짓, 즉 아무 의미없는 숫자를 넣.. 2019. 10. 27.
Lord of SQL Injection 2단계, cobolt 풀이 지난 1단계를 이어서 이번에는 2단계, 코볼트이다. 빠르게 코드부터 살펴보자. 코드를 먼저 분석해보자. 이번에는 조건문이 1단계에 비해 뭔가 더 복잡해졌다. id값이 admin일 때 풀 수 있는 문제이다. 조금만 더 생각해보면, 그냥 id에 admin을 넣으면 되는 아주 간단한 구문이다. 정답은 더보기 클릭! 더보기 ?id=admin'%23 %23은 #의 아스키코드 값에 %를 붙인 값이다. 여기서 1=1구문을 넣지 않은 것은, $query문이 모두 참이되어 id값이 전부 select될 경우 if가 아닌 else if문이 실행되기 때문이다. 문제에서 요구하는 정확한 값을 집어넣도록 하자! 2019. 10. 27.
Lord of SQL Injection 1단계, gremlin 풀이 요즘 하루 한 개씩 풀고 있는 sql injection 문제다. 기초도 쌓이고 아직까지 그렇게 높지는 않아서 재밌게 풀고 있다. 사진 속 gremlin을 클릭하면, 잡다한 코드가 나온다. 분석해보자. 난 복잡한 코드를 보면 뇌가 정지되는 병이 있어서 한 3분간 주춤했다. 그런데 따지고 보면 그다지 어렵지는 않은 코드다. 중요한 코드들만 뽑아서 문제를 해결해 보자! preg_match 함수는 정규표현식 함수이다. 쉽게 말해 저 정규식에 포함되는 문자가 들어가면 exit된다는 뜻이다. $_GET[ ]은 우리가 url창을 통해 직접 입력이 가능하다. 즉, 임의로 변경할 수 있는 값이다. mysql에서는 한 줄 주석을 #으로 주로 처리하는데, --로도 가능하다는 사실을 최근에 알았다. --로 할 시 이후 공백이.. 2019. 10. 27.