'Solve Problem'에 해당되는 글 170건

반응형

<<< 18번 문제 >>>

들어가면 저런 모습이 떡하니 있다. phps를 통해 해당 코드를 볼 수 있으니 한번 들어가보자.

누르면 코드들이 보이는데 그 중 sql과 관련된 부분은 아래와 같다.

우리가 입력한 것이 빈칸이거나 /이거나 \(이거나 등등.. 몇 가지 제한을 걸어두었다.

union도 제한에 걸려있으므로 우리가 알아본 union sql injection은 하지 못한다.


일단 아무거나 넣어보니 0을 넣었을 때는 반응이 없고 1을 넣었을 때 아래와 같이 hi guest가 뜬다.


뭐.. 그건 중요하지 않다. 우리는 admin 계정으로 접속을 해야하니까!

먼저 논리적 에러 SQL Injection을 시도해보자.

1이 guest였으니 2가 admin이라 가정하고 풀어보자

0 or no=2

라고 입력하게 되면 아까 0을 넣었을 때 반응이 없었으므로 false가 되고 따라서 no이 2인 열이 출력된다.


여기서 스페이스바를 막아버렸으니 다른 방법으로 쿼리문을 대체해야한다!

여기에는 여러가지 방법이 존재한다.

Tab(%09)이용 / Line Feed(%0a) 이용 / Carrage Return(%0d) 이용 / 주석(/**/) 이용

/ 괄호() 이용 / AND(&&)나 OR(||) 이용 등등


두번째 if문을 보면 주석에서 사용하는 /도 막았고 괄호도 막았고 텝하는 방법도 막았다. 따라서 다른 방식을 이용하여 해당 문제를 풀면 된다.

나는 line feed를 이용하여 문제를 해결하였다.


그러면 문제 해결!!



반응형

'Solve Problem' 카테고리의 다른 글

[webhacking.kr] 7번 문제  (0) 2015.07.06
[webhacking.kr] 49번 문제  (0) 2015.06.29
[webhacking.kr] 27번 문제  (0) 2015.06.29
[webhacking.kr] 21번 문제  (0) 2015.06.29
프로젝트 오일로 문제풀이  (0) 2014.11.15
블로그 이미지

rootable

,
반응형

3번 문제

 The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?


1
2
3
4
5
6
7
8
9
target = 600851475143
prime=3
 
while(prime <= target):
    if target % prime == 0:
        target = target/prime
        print(prime)
    else:
        prime = prime+2


------------------------

4번 문제

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
num1=999
num2=999
result=0
largest=0
 
while(num2>99):
    while (num1>99):
        result = num2 * num1
        if(str(result)==str(result)[::-1]):
            if(result>=largest):
                largest = result
        num1 = num1-1
    
    num2 = num2-1
    num1 = 999
 
print("%d * %d = %d" %(num2,num1,largest))

--------------------------
5번 문제

1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다.

그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
result=k=1
i=j=2
 
while i<=20:
    while j<=i:
        if j==i:
            while k*j<20:
                k = k*j
            result = result*k
            k=1
            break
        elif i%j==0:
            break
        else:
            j = j+1 
    j=2
    i = i+1
 
print ("result = %d" %result)


------------------------------
6번 문제

1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).

12 + 22 + ... + 102 = 385

1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).

(1 + 2 + ... + 10)2 = 552 = 3025

따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다.

그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까?


1
2
3
4
5
6
7
8
9
10
11
square_sum = 0
isum = 0
 
for i in range(1,101):
    isum = isum + i
    square = i*i
    square_sum = square_sum + square
 
sum_square = isum * isum
 
print(sum_square-square_sum)

---------------------------------
7번 문제

소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다.

이 때 10,001번째의 소수를 구하세요.




반응형

'Solve Problem' 카테고리의 다른 글

[webhacking.kr] 7번 문제  (0) 2015.07.06
[webhacking.kr] 49번 문제  (0) 2015.06.29
[webhacking.kr] 27번 문제  (0) 2015.06.29
[webhacking.kr] 21번 문제  (0) 2015.06.29
[webhacking.kr] 18번 문제  (0) 2015.06.29
블로그 이미지

rootable

,