ereg('찾고자 하는 문자', '필터링 할 문자열') 

대,소문자를 구문하는 함수로 찾고자 하는 문자가 있으면 True, 없으면 False를 출력한다.


eregi('찾고자 하는 문자', '필터링 할 문자열')

대,소문자를 구문하지 않는 함수로 찾고자 하는 문자가 있으면 True, 없으면 False를 출력한다.


찾고자 하는 문자를 정규식으로 표현 할 수 있고 문자들을 구분하기 위해서는 | 를 사용한다.

'함수들' 카테고리의 다른 글

@file함수  (0) 2018.01.04
fwrite함수  (0) 2018.01.04
fopen함수  (0) 2018.01.04
MySQL limit함수  (0) 2017.09.24
mysql if문  (0) 2017.09.10

다시한번 sql injection문제가 나왔다.

blind sql injection은 한번에 뚫기보다는 보통 길이 정도만 수동으로 알아봐주고

나머지는 파이썬 같은 코드로 알아내면 된다.

우선 제출을 누르니 주소창에 no=&id=&pw=가 나온다

아마 pw를 구하는 문제이지 싶다.

소스를 보니 제출 옆의 input값은 no에 값을넣어 주는 창이고 id와 pw는 따로 hidden으로 숨겨져 있었다.

여기서 1값과 2값을 넣어주니 Result값이 True로 변했다.

이 말은 

no   id   pw

테이블에서 no값은 1,2 라는 뜻 이다.

그렇다면 id의 길이를 알아보기 위해서

넣어보니 1,2 모두 5가 나왔다.

그래서 pw의 길이를 넣어서 찾아보니

1은 5, 2는 19가 나왔다.


그래서 admin이 있나 찾아보기 위해 단어의 제일 처음이 a인 것을 찾으니 

no=2 였고

2번째 자리가 d인 것도 no=2였다.

그래서 no = 2의 pw를 찾기로 해 보았다.

그래서 python소스를 이렇게 짜서 돌려보니

pw가 나왔다!


이것을 인증해 주면

21번도 클리어!!

(힌트: 답을 안보고 하실분은 소문자만 쓰이기 때문에 ascii의 범위를 97~122로 해주면 훨씬 빨리 값이 나옵니다)

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

Webhacking.kr 32번  (0) 2018.01.02
Webhacking.kr 27번  (0) 2018.01.02
Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 18번  (0) 2017.12.27
Webhacking.kr 39번  (0) 2017.12.27

우선 첫화면이다.

hello world가 적힌 곳은 값은 입력되지만 저장은 안되는 것 같다.

위에 존재하는 리눅스에서 볼 수 있는 파일에 관한 정보가 출력되어있다.

아마 저것이 힌트가 될 듯 싶다.

소스를 봐도 별게 없다.

딱히 인풋값도 넣을 수 있는게 없다.

그런데 주소값을 보니 file = 뒤에 hello가 있다.

아마 파일입력을 저기다 해도 될 듯 싶다.

index파일명을 집어 넣어 보았다.

하지만 변화되는 것은 없다.

password를 집어넣어도 변화가 없다.

쿠키값도 문제가 없다.

뭐가 문제일까 인터넷을 뒤지던 중 문자열을 종결 시키는 %00을 찾았다.

password값으로 넣어 보았더니 답이 출력되었다.

25번 클리어!


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

Webhacking.kr 27번  (0) 2018.01.02
Webhacking.kr 21번  (0) 2017.12.29
Webhacking.kr 18번  (0) 2017.12.27
Webhacking.kr 39번  (0) 2017.12.27
Webhacking.kr 52번  (0) 2017.11.18

 연산자

 사용예

설명 

 AND

"A"&"B" 

"A"와"B"의 문자열을 모두 포함하는 문서검색 

 OR 

"A" | "B" 

"A"또는"B"의 문자열을 포함하는 문서검색

 NOT

"ABC" - "D" 

"ABC"문자열을 포함하고 "D"문자열을 제외한 문자 검색 

 ""

"ENG" 

인용부호를 사용해 정확한 단어 혹은 문구 검색 

 ~

~HI 

동의어 또는 관련 검색어와 함께 검색 

*NG*ISH 

알 수 없는 단어가 위치한 부분에 *연산자를 사용해 검색 

.. 

BORN 1994..1999 

숫자 사이에 ..를 넣어 가격,수치와 같이 범위 문서를 검색 

inurl:

inurl:abc 

주소에 abc가 들어간 문서 검색 

intitle:

intitle:abc 

Title에 abc가 들어간 문서 검색 

intext: 

intext:abc 

본문에 abc이 들어간 문서 검색 

Site:

site:http://abc 

http://abc문서에서의 검색 

link:

link:http//abc

http://abc의 링크가 걸린 문서검색 

inanchor: 

inanchor:http://abc 

http://abc가 텍스트로 표현된 문서검색 

filetype: 

filetype:jpg 

jpg확장자 검색 

numrange: 

numrange:100-200 

100-200 숫자 범위의 결과 검색 


'컴퓨터 관련 정보' 카테고리의 다른 글

idapython 7.4 바뀐 API 비교 목록  (1) 2019.12.03
ESP, EBP  (0) 2018.04.16
정규표현식  (0) 2018.01.09
Ascii 코드표  (0) 2017.09.23
url code 표  (0) 2017.09.18

18번문제다!

우선 sql injection문제이다.

los를 좀 풀어봐서 쉬울거라 생각했다.

index.php를 누르면 소스를 보여준다.

우선 쿼리문에서 id=guest와 no=제출된 값 을 불러와 그게 guest면 hi guest

admin값이면 정답이다.

우선 no=1이라고 치니까 hi guest를 띄운다

여기서 no =1 이면 guest값이라는 것을 알 수있다.

그렇다면 attribute는 id와 no 값이 있다고 가정할 수 있고

그것의 id= guest, no =1은 guest이다.

그렇지만 우리는 admin을 찾아야한다.

그래서 처음 넣는 no값은 false여야 함으로 0을 넣고 그다음 admin값의 자리를 불러와야한다.

소스에서 eregi가 \t와 or, and를 막고 있기 때문에 or를 우회해 쓰려면

linefeed값인 %0a를 or앞뒤로 붙여준다.

그래서 " no=0%0aor%0ano=2"라고 했더니 아무것도 안뜬다.

그래서 위의 url창을 보니 no안에 no가 들어가있다.

그래서 소스를 보니 input창이 no다.

그렇다면 "0%0aor%0ano=2"를 치니

18번도 클리어!!



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

Webhacking.kr 21번  (0) 2017.12.29
Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 39번  (0) 2017.12.27
Webhacking.kr 52번  (0) 2017.11.18
Webhacking.kr 47번  (0) 2017.11.18

39번 문제를 시작했다.

간만에 하는거라 처음에는 어디서 손댈지 몰랐지만


소스를 보니 index.phps가 나와있다.



아무거나 제출해 보니 mysql_fetch_array()에러가 나왔다.

그래서 일단 index.phps로 들어가보니

그랬더니 error에서 뜬 17번째 줄에 $_POST[id]뒤에 '가 없다.

그리고 위에서 str_replace에 \는 없어지고 '는 ''로 바뀐다.

그래서 제출칸에 '만 넣어주면 바뀌지 않는다.

그런데 substr에 0~15까지만 잘라서 id에 넣기때문에 그뒤는 없어진다.

그래서 15칸의 마지막에 ' 를 넣어주면 뒤의 '는 짤린다.

그래서 admin         '를 해주면

문제클리어!


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

Webhacking.kr 25번  (0) 2017.12.29
Webhacking.kr 18번  (0) 2017.12.27
Webhacking.kr 52번  (0) 2017.11.18
Webhacking.kr 47번  (0) 2017.11.18
Webhacking.kr 38번  (0) 2017.11.18
import numpy as np
def Fibonacci_1(number):#O(2^n)
    if(number == 0):
        return 0
    elif(number == 1):
        return 1
    return Fibonacci_1(number-1) + Fibonacci_1(number-2)

def Fibonacci_2(M, number):#O(logn)
     if(number > 1):
         if number % 2 ==0:
             M = Fibonacci_2(M, number/2)
             M = np.dot(M,M)
         elif number % 2 ==1:
             M = Fibonacci_2(M,(number-1)/2)
             M = np.dot(M,M)
             M_1 = np.array([[1,1],[1,0]])             
             M = np.dot(M,M_1)
     return M

def Fibonacci_3(number):
    Fibonacci_T = []
    if number ==0 or number == 1:
        return number
    Fibonacci_T.append(0)
    Fibonacci_T.append(1)
    for i in range(2,number+1):
        Fibonacci_T.append(Fibonacci_T[i-1]+Fibonacci_T[i-2])
    result = Fibonacci_T
    return result

if __name__=='__main__':
    M=np.array([[1,1],[1,0]])
    a = (Fibonacci_2(M,10))
    F2 = a[0][1]
    b = Fibonacci_3(10)
    F3 = b[len(b)-1]
    
    
    print("O(2^n)")
    print(Fibonacci_1(10))
    print("O(log n)")
    print(F2)
    print("O(n)")
    print(F3)


def Power(Base, Exponent):
    result = Base
    count = 1
    ex_Exponent = Exponent
    list1 = []
    while(ex_Exponent > 1):
        if ex_Exponent % 2 == 0:
            list1.append(0)
            ex_Exponent = ex_Exponent/2
        else:
            list1.append(1)
            ex_Exponent = (ex_Exponent - 1)/2
    list1_len = len(list1)
    for count in range(list1_len):
        if list1[list1_len - count -1] == 0:
            result = result * result
        else:
            result = result * result * Base
    return result

if __name__=='__main__':
    print(Power(11,3))


+ Recent posts