본문 바로가기

전체 글492

Lord of SQL Injection 12단계, darkknight풀이 이번 포스팅은 12번째! 다크나이트이다. 이름이 정말 멋있고 썸네일(?) 도 멋있다. 개인적으로 칼 등의 무기를 든 것보다 방패를 든게 더 멋있는 것 같다. 사설이 길었다. 빠르게 코드로 넘어가자! 12번 다크나이트 문제도 블라인드인젝션 유형의 문제이다. 주요한 코드를 살펴보자! preg_match 를 통해 pw 에서는 ' 가 필터링되어 있고, no에서는 ' 와 substr, ascii, = 이 필터링 되어있다. 이 쿼리문을 보면 pw에는 우리가 입력한 값을 싱글쿼터로 감싸주고 있으나, no에서는 아무런 보호막(?)이 없다. 우리가 no를 아무값이나 막 쓰고 or 을 사용하여 쿼리문을 이어주면 된다. 이제 블라인드 인젝션 공격을 시행해보자! 더보기 먼저 길이를 알아내야한다. ?no=1234 || leng.. 2019. 11. 7.
Lord of SQL Injection 11단계, golem풀이 이번 포스팅은 11단계, 골렘 풀이 포스팅이다. 드디어 발표 두개를 무사히 다 끝냈다. 마음이 홀가분한 상태로 하는 공부는 기분이 좋다! 과제를 끝냈으니 즐거운 기분으로 포스팅을 시작해 보자! 코드부터 살펴보겠다. 자아,,, 이번에도 블라인드 인젝션이다. 주요한 코드만 뽑아서 다시 보자. preg_match가 우리가 쓰면 안될 것을 알려준다. or 와 and, 그리고 우리가 문자열을 잘라낼때 쓰던 substr, = 이 금지당했다! =이 금지당하면 like로 우회 가능하다. 이것은 저번 문제에서도 사용했던 것인데, 기억이 나지않는다면 10단계 스켈레톤 풀이를 다시 보고오길 바란다. substr은 무엇으로 우회해야할지 잘 모르겠어서 구글링했다. 두가지가 나타난다. 1. substring 2. mid 이 두가.. 2019. 11. 7.
Lord of SQL Injection 10단계, skeleton풀이 이번 포스팅은 10단계 스켈레톤 풀이이다. 사실 요즘 ppt만들고 발표하는 과제가 많아져서 블로그 포스팅할 시간이 없었다. (핑계) 과제가 정말 많다. 하지만 불굴의 의지를 가진 나를 아무도 막을 순 없으셈 다 안할래 포스팅 시작하겠다! 빠르게 코드부터 살펴보자. 보자마자 코드가 짧아 안심되었다. 주요한 코드를 살펴보자! 이 코드에서 특별한 점은, pw 값을 받고 난 후 and 1=0 이라는 구문이 조건이 더 붙은것이다. 평소 해왔던대로 pw를 닫고 or 연산자를 써서 id='admin' 을 추가하면 될 것 같다. 하지만 ?pw=' or id='admin' 만 써넣는다면 and 1=0 때문에 결과값이 나오지 않는다. and보다 or가 우선 순위가 더 낮기때문이다. and 부터 처리된다는 사실을 기억하고 .. 2019. 11. 5.
Lord of SQL Injection 9단계, vampire풀이 오늘은 내가 생각하기 los문제 그림 중 가장 무섭게 생긴 뱀파이어, 9단계 풀이를 진행해보겠다. 사실 9단계와 거의 다르지 않아서 이게 왜이럴까, 출제의도가 뭘까 잠시 고민했었다. 그런데 아니나 다를까 예전 문제의 코드와 현재 문제의 코드가 약간 달라졌다. 우리가 풀고있는것은 우선, 최근 나와있는 버전의 코드는 이렇다. 우선 중요한 코드를 살펴보겠다. str_replace를 통해 admin이라는 문자열을 ""로 바꿔버린다. 그렇다면 이걸 이용해 풀어보자! 이것은 lord of sql injection 2버젼이당. 1버전은 조금 더 어려웠던 것 같다. 1버전은 대문자를 소문자로 다바꿔버리는데, 2버전은 그런게 없어서 그냥 id=ADMIN이렇게 해도 풀린다. 그래도 다른 버전으로 풀어보겠다! 더보기 ?id.. 2019. 10. 31.
Lord of SQL Injection 8단계, troll풀이 이번 포스팅은 load of sql injection 8단계인 트롤 문제를 다뤄보도록 하겠다. 사실 블라인드 인젝션을 제외하고는 대충 문제의 감이 잡혀서 그런지 술술 풀리는 느낌이다. 서론이 기니 빨리 코드를 보도록 하자! 자, 이번 문제에서 내가 가장 중요시했던 코드는! 바로 이 부분이다. 나는 아직 보안에 입문한지 얼마 되지 않아서 많은 지식이 부족한 상태이다. (실드) 그래서 ereg라는 얘가 도대체 뭘 하는 얘인지 몰라서 열심히 구글링 했었다. 정리하자면, ereg란 문자열필터링 함수이다. ereg('원하는 문자','필터링할 문자열') 과 같은 형식으로 작성하고 대소문자를 구분하며 원하는 문자가 있으면 True, 없으면 False를 돌려주는 함수이다. 자, 여기서 중요한 부분은 이 함수는 대소문자.. 2019. 10. 30.
Lord of SQL Injection 7단계, orge풀이 이번 포스팅은 7단계, orge 풀이 포스팅이다. 사실 이것도 블라인드 인젝션인데, 4단계와 핵심 함수와 과정이 같으니 4단계가 아직 이해가 되지 않은 사람들은 4단계로 다시 돌아가길 바란다. 그럼 코드부터 확인하자. 6단계와 마찬가지로 preg_match문을 통해 or와 and가 막혀있다. 이것이 4단계와의 차이점이고, 나머지 과정은 전부 같다. Load of SQL Injection 4단계 잘 알고 있지만 아주 잠깐 헷갈리는 사람들을 위해 덧붙이자면, 1. ascii() : 입력받은 인자를 아스키 코드 10진수로 변환하는 함수 2. length() : 문자열의 길이를 반환한다. 3. substring(문자열, 시작위치, 길이) : 문자열의 시작위치에서 잘라낼 문자 개수를 지정하여 반환하는 함수 ex).. 2019. 10. 30.