Python/2.7 simple coding(+ c++)

Security Override Programming 6~7

qkqhxla1 2014. 12. 17. 21:33

level 6.


x^2 + 3x + 4 같은 다항식은 (x+1)(x+3) 과 같이 변형해서 보내야 한다.


몇번 돌려보니 +만 나오고, 대략 -50000~0사이의 값이 해가 된다. 그냥 가장 단순한 알고리즘으로 


하나하나 대입해봐서 값이 맞으면 그걸 값으로 정하는 알고리즘으로 짰다.


주의점 : 방정식을 만들어서 그냥 보내면 안된다. 데이터 전송시 url인코딩되어져서 보내지는데


(,)가 인코딩되지 않고 그냥 보내면 서버에서 알아먹질 못한다. urllib2.quote()같은걸로 한번 인코딩해서 보내야


한다.


import urllib2,re,math

req = urllib2.Request('http://securityoverride.org/challenges/programming/6/index.php')
req.add_header('cookie','PHPSESSID=쿠키')

strs = re.findall("<code style='white-space:nowrap'>\s*(.*?)\s*</code>",urllib2.urlopen(req).read())[0].split(' + ')
print strs
one = int(strs[1][:-1])
two = int(strs[2])

i = -99999; answer = []; count = 0
while 1:
    if count == 2:#이차방정식은 해가 두개이다.
        break
    elif math.pow(i,2)+one*i+two == 0:
        answer.append(i)
        count += 1
    i += 1
answer = urllib2.quote('(x+'+str(-answer[0])+')(x+'+str(-answer[1])+')') #답에 맞게 포맷을 만든다.

req = urllib2.Request('http://securityoverride.org/challenges/programming/6/index.php','CSRF_TOKEN=%3C%3Fphp+echo+%24_SESSION%5B%27CSRF_TOKEN%27%5D%3B%3F%3E&string='+answer+'&submitbutton=+Time+Has+Expired+')
req.add_header('cookie','PHPSESSID=쿠키')
print urllib2.urlopen(req).read()



level 7.


어떤 수가 주어지면 해당 수의 약수를 구한 후, 그 약수가 소수이면 남겨뒀다가 그 소수들의 합을 보내면 된다.


import urllib2,re,math
req = urllib2.Request('http://securityoverride.org/challenges/programming/7/index.php')
req.add_header('cookie','PHPSESSID=쿠키')
strs = re.findall("<code style='white-space:nowrap'>\s*(.*?)\s*</code>",urllib2.urlopen(req).read())[0]
sum = 0
for i in range(2,int(strs)):
    if int(strs)%i==0: #약수이면
        flag = 1
        for j in range(1,i):
            if i%j==0 and j!=1: #소수가 아니면
                flag = 0
                break
        if flag: #소수이면 더함
            sum += i

req = urllib2.Request('http://securityoverride.org/challenges/programming/7/index.php','CSRF_TOKEN=%3C%3Fphp+echo+%24_SESSION%5B%27CSRF_TOKEN%27%5D%3B%3F%3E&string='+str(sum)+'&submitbutton=+Time+Has+Expired+')
req.add_header('cookie','PHPSESSID=쿠키')
print urllib2.urlopen(req).read()



'Python > 2.7 simple coding(+ c++)' 카테고리의 다른 글

Security Override Programming 9  (0) 2014.12.18
Security Override Programming 8  (0) 2014.12.18
Security Override Programming 4~5  (0) 2014.12.17
Security Override Programming 1~3  (0) 2014.12.17
Net-Force Programming 4~5,6?  (0) 2014.12.03