ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 61번 풀이
    Wargame/webhacking.kr (old) 2019. 5. 11. 03:57


    소스를 해석해보면,

    id 값이 존재하지 않으면 id 값은 guest로 초기화되고, id 값은 get방식으로 받는다.

    id 값은 eregi함수에 의해 (, ), union등의 문자열이 필터링되고, 18자로 길이도 제한되어 있다.

    쿼리문의 결과값이 admin이면 문제가 풀린다.


    eregi("정규 표현식", "대상 문자열")  // 대소문자 구분 x

    ereg("정규 표현식", "대상 문자열")  //대소문자 구분 o

    대상 문자열이 정규 표현식과 일치하면 True, 일치하지 않으면 False 반환


    strlen()

    문자열 길이 구하는 함수



    쿼리문을 보면 id 값은 select 뒤, 칼럼명이 들어가는 자리에 위치한다.

    id 값을 기준으로 내림차순으로 제일 첫 번째 줄을 출력시켜준다.


    id 값으로 칼럼 명인 id를 입력하였더니,, zombie가 출력된다.

    아이디가 알파벳 순서로 되어 있는것이 아닐까 하는 추측을 해본다.

    a로 시작하는 admin을 어떻게 첫 번째로 출력할 수 있을까?!



    AS(Aliases)

    테이블의 열의 이름을 임시로 변경하여 단순화하거나, 칼럼 값을 합쳐 하나의 값으로 출력하고자 할 때

    사용하는 구문


    [ 사용 방법 ]

    "칼럼명" as "별칭"

    "칼럼명" "별칭"


    MySQL로 실습해보았다.

    우선 테이블을 만들고,,



    1. 열의 이름 변경 (information -> info)



    2. 값을 합쳐 하나의 값으로 출력

    id 값과 phonenumber 값을 합쳐 id:phonenumber 형식의 데이터를 Uphone 칼럼명으로 출력



    이정도면 AS구문 사용법을 익혔다고 할 수 있다.

    문제에 적용해보자.



    id='admin' as id

    magic_guotes_gpc가 설정되어 있어, hex를 이용하였다.


    id=0x61646d696e as id



    'Wargame > webhacking.kr (old)' 카테고리의 다른 글

    [Webhacking.kr] 60번 풀이  (0) 2019.05.11
    [Webhacking.kr] 59번 풀이  (0) 2019.05.11
    [Webhacking.kr] 58번 풀이  (0) 2019.05.11
    [Webhacking.kr] 57번 풀이  (0) 2019.05.09
    [Webhacking.kr] 56번 풀이  (0) 2019.05.09

    댓글

@Jo Grini's Blog