※ 관련 개념은 방학활동 / 개념정리를 참고해주세요 ※
# Dreamhack_csrf-1
실행화면)
실행화면_vuln(csrf) page)
실행화면_memo)
실행화면_notice flag)
실행화면_flag)
[코드 분석하기]
1) Cookie 생성됨
2) Domain : 127.0.0.1:8000 (local host)
→ 제공받은 주소와 포트가 다르므로 쿠키 값이 저장되어있지 않은 것을 알 수 있다.
지정된 도메인에서 확인해야 함
- 이 코드에서도 또한 도메인 주소가 127.0.0.1인 local host로 접근해야한다는 사실을 알 수 있다.
1) userid = admin
정리해보자면, notic_flag 사이트의 userid(쿠기값)는 admin이어야 하며, 포트번호는 local host여야한다는 것이다.
따라서 flag 페이지에는
<img src=http://localhost:8080/admin/notice_flag?userid=admin>
가 들어가야 한다.
# Dreamhack_file-download-1
실행화면)
실행화면_Home)
실행화면_Home_Upload)
실행화면_Home_Upload_filename)
[코드 분석하기]
1) 사용자가 메모를 작성하면 제목은 Filename, 내용은 content로 저장
2) POST 요청으로 전달한 Filename 파라미터 값에 상위 디렉토리 이동 명령어 '..' 탐지
3) '..'이 탐지되지 않으면 Filename 파라미터(매개변수) 명으로 파일을 생성하고, Content를 내용으로 작성
1) 업로드 된 파일들의 디렉터리 = filename 바로 위 디렉터리
따라서, 메모와 content가 보이는 마지막 화면(Home_Upload_filename)에 위 파일을 업로드 해주면 될 것이라는 예상을 할 수 있다.
home_upload_filename 화면의 url을 보면(위 사진 참고), "http://host3.dreamhack.games:20467/read?name=df" 로 되어 있어서 name변수의 값이 직접 입력한 filename(df)로 되어있는 것을 알 수 있다.
따라서 name의 값에 파일을 올려주면 될 것이라는 판단을 할 수 있다.
업로드 된 파일들의 디렉터리는 filename 바로 위 디렉터리 이므로, 상위 디렉토리 이동 명령어인 ".."를 이용하면 된다.
"http://host3.dreamhack.games:20467/read?name=../flag.py"
# Lord of SQL injection_gremlin
실행화면)
1) get 방식으로 url에서 변수를 받아오고, 그것을 SQL에 query로 날려보냄
2) id와 pw가 and로 연결되어있음
▷ query를 날리기 위해서는 url 맨 뒤에 '?' 를 붙여야 함
따라서, 이를 해결하려면 id와 pw가 참이 되도록 해야하는데, 그 방법은 바로 우선순위가 높은 'or'을 이용해야 참이 될 수 있다.
→ url : ~~.php?id=admin@pw=admin&pw=admin'or'1'='1
# Lord of SQL injection_cobolt
[실행화면 & php 소스 분석]
앞 문제 (Lord of SQL injection_cobolt)와 비교해보면, pw 부분이 달라졌음을 알 수 있다.
일단, 어떻게 query에 입력되는지 확인하기 위해
?id=admin&pw=admin
을 넣어봤더니,
위의 사진처럼의 결과가 나왔다. 결과를 통해 pw 검증을 우회하는 방법을 써야한다는 것을 알 수 있다.
우회하기 위해서는 주석 표시인 '#'을 사용해야 함을 알 수 있다.
→ 방법 : id=admin'# 사용
하지만, 이를 url에 입력해야하기 때문에 '#'을 디코딩을 한 %23 와, '을 디코딩한 %27을 삽입해야한다는 사실을 알 수 있다.
따라서 url에 ~.php?id=admin%27%23 을 입력하면 된다.
# webhacking.kr_1번
실행화면)
[php 소스 분석]
1) 윗 부분의 php 소스; user_Iv의 쿠키 값이 존재하지 않으면 SetCookie를 이용하여 설정
2) 아랫 부분의 php 소스; user_Iv의 쿠키 값이 4이상이면 쿠키값을 다시 1로 설정
3) user_Iv의 쿠키 값이 3보다 클 경우에는 solve(1) 실행
따라서, user_Iv의 쿠키 값은 3과 4 사이의 값으로 설정해야한다.
# Dreamhack_cookie
문제화면)
[php 소스 분석]
1) users의 갯수 : 2개 (guest, admin)
실행화면)
실행화면_개발자 도구(F12))
1) 개발자 도구(F12)로 확인해보니 guest, guest로 로그인이 가능함을 알 수 있다.
→ 이를 이용해 로그인을 하면, 쿠키 값이 생성된다는 것을 알 수 있다.
value(쿠키값)를 users 계정 중 admin으로 수정한 후 새로고침을 하면 flag 값이 나온다.
'5. 방학 활동 > Write UP' 카테고리의 다른 글
[2023.02.11] 워게임&CTF 스터디 1팀 문제풀이(포너블(1))] (0) | 2023.02.25 |
---|---|
[2023.02.02] 워게임&CTF 스터디 1팀 문제풀이(리버싱)] (0) | 2023.02.19 |
[2023.2.12] 워게임&CTF 스터디 2팀 문제풀이(fly_me_to_the_moon) (0) | 2023.02.13 |
[2022.07~08] 백준 알고리즘 문제 풀이 스터디 (0) | 2022.09.15 |
[2022.01~02]방학활동 - Dreamhack 워게임 문제 풀이 (0) | 2022.02.28 |