리스트, 튜플, 문자열 등 요소가 나열된 자료형의 첫 요소부터 마지막 요소까지 변수에 대입

요소 개수만큼 반복


[기본 구조]

for 변수 in 리스트 :

수행문 (이때 변수에는 리스트의 요소 값이 대입된 상태)


for문에서 사용되는 변수는 선언과 동시에 생성 되는 개념이기 때문에 미리 만들어 놓지 않아도 된다.

1
2
3
for i in [123456789]:
    print(i*2)
# 출력값 : 246, 912, 1578
cs


range() : 지정한 범위 만큼 숫자들을 반환하는 함수

1
2
print(list(range(1,10)))
# 출력값 : [1, 2, 3, 4, 5, 6, 7, 8, 9]

cs

시작 숫자를 지정하고 끝 숫자는 포함하지 않는다.


for문에서 range()함수 사용

1
2
3
4
5
add = 0
for i in range(1,11):
    add += i # i의 값을 add에 누적
print("1~10까지 합 :", add)
출력값 : 1~10까지 합 : 55
cs



'Language > Python' 카테고리의 다른 글

2차원 리스트 행렬 변환  (0) 2021.07.02
멜론차트 1~50위 크롤링  (0) 2019.09.02
반복문(while)  (0) 2019.02.09
조건문(if)  (0) 2019.02.08
입력 함수(input)  (0) 2019.02.08


문제를 보면 pat 라는 변수에 정규식을 저장하고 있다.

정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.


그리고 그 밑에줄의 코드를 보면 preg_match() 라는 함수를 사용하고 있는데, 이 함수는 php에서 문자열을 매칭시키는 기능을 한다.

그래서 이 코드를 해석해보면 pat의 값을 val에 GET형식으로 매칭시켜주면 Password를 출력해 주는 것 같다.


다음은 PHP 정규식을 설명한 표 이다. (출처 : https://iam777.tistory.com/m/306)

이 표를 보고 정규식을 해석해보면 1에서 3 사이의 숫자 1개, a에서 f사이의 알파벳 5개, 그리고 \t는 tab를 의미하는데, url 인코딩 하면 %09 이다.

따라서 1aaaaa_.*ip주소.*%09p%09a%09s%09s/가 나온다.


이 변수를 val 파라미터 값으로 넘겨주면 문제가 해결된다.




'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge12  (0) 2019.06.06
[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18


10번 문제에 처음 들어가면 볼 수 있는 화면이다.

회색공간의 O에 커서를 가져가면 순간적으로 yOu라고 바뀌는 것을 볼 수 있다.


이 부분의 소스코드를 확인해 보면 다음과 같은 코드가 있다.

코드를 읽어보니 posLeft가 800이 되면 ?go 라는 페이지로 이동하게 되고(if(this.style.posLeft==800)this.href='?go='+this.style.posLeft"),

한번 클릭을 할 때 마다 posLeft가 1씩 증가한다. (onclick="this.style.posLeft+=1)

또한 현재 값은 0이다.


그러나 클릭을 아무리 많이 해도 화면상의 변화가 보이지 않는다.

구글링을 통해 확인해 봤더니 이 문제는 internet explorer 브라우저에서 적용된다고 한다....ㅠ


ie브라우저에서 문제를 다시 확인해보면 여러번 클릭했을 때 다음과 같이 'O' 글자가 이동하는 것을 볼 수 있다.

이것을 800번 누르면 문제가 해결되는것 같은데 800번 누르기는 매우 힘들기 때문에 한 번 클릭씨 800이 증가하게 소스코드를 수정해 주었다.


다음과 같이 800으로 변경하고 한번 클릭하게 되면 left 값이 800이 되어 문제가 해결된다.





'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11

문제를 보면 퍼즐이 있는데 로직 퍼즐 인것 같다.

로직은 숫자만큼 비어있는 칸을 색칠하는 규칙을 가진 형태의 퍼즐이다.

빈 칸을 클릭해보면 검은색으로 칠해진다.

이 퍼즐을 풀어보면 다음과 같은 모양이 나온다.


밑에 gogo 버튼을 누르면 이름을 입력하는 칸이 나온다.

이 칸에 admin이라고 입력하고 write를 누르면 

이런 내용이 나왔다.

여기의 answer값을 인증시켜 보니 답은 아니였다.

다시 name 칸으로 돌아가 소스를 확인해 보니 입력 받는 곳의 코드는 이렇게 되 있었다.


value의 값을 참으로 해주기 위해 위 코드에 or 1 을 추가해 보았다.

1을 입력하고 write를 클릭하니 no hack 라고 나왔다.

or 이라는 문자열을 필터링하는 것 같다.


or과 같은 뜻을 가진 기호인 ||를 사용하여 코드를 수정해 보자.


수정 후 1을 입력하면 다음과 같은 내용이 나오고 answer값을 인증하면 문제가 해결된다.












'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10

문제를 보면 힌트에 base64가 있고, index.phps로 들어갈 수 있다.

index에 들어가보면 php 코드들이 있는데 

이 부분을 보면 base64로 20번 인코딩 되어 있는 것을 확인 할 수 있다.

쿠키값을 보게되면 base64로 인코딩 되어 있는 것을 볼 수 있다.


그리고 php코드의 아랫부분을 보면 

디코드 한 아이디와 패스워드의 값이 admin이면 문제가 해결되는 것 같다.


admin을 base64로 20번 디코딩 하면 다음과 같은 값이 나온다.


이 값을 user과 password의 쿠키 값에 넣으면 문제가 해결된다.


'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 3  (0) 2019.02.21
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 29  (0) 2019.02.09

문제를 보면 파일은 USB 이미지 파일이다.

USB는 FAT32 파일 시스템을 사용한다.

파일을 HxD로 열어보면 

FAT32 파일시스템의 BR은 1섹터(512byte)의 크기를 가지고 있고, 55 AA로 끝난다.

이 USB 이미지를 보면 BR부분이 망가져 있다.

처음부터 55 AA 까지의 길이는  296이므로 512byte가 되려면 296 byte 만큼 00 으로 추가 해 주어야 한다.

파일을 저장하고 FTK Imager 이라는 툴을 이용해 이 이미지 파일을 열면 

2차 테러 계획이라는 파일이 보인다.

이 파일을 다운로드 받아 속성을 보면 

문서의 수정 일시는 2016-05-30_11:44:02 이고,

테러 장소는 Rose Park 이다. 


이 답들을 조합하여 md5로 해시하면 문제가 해결된다.








pdf 파일을 다운받아서 열어보면 다음과 같은 내용이 있다.


이 pdf를 PDFStreamDumper 이라는 pdf파일 분석 툴을 이용하여 분석해 보겠다.

이렇게 40개의 항목들로 나눠져 분석이 되는데 39번을 보면 pdf헤더가 존재한다.

이 39번을 pdf 파일로 추출할 수 있다.

39번을 우클릭하고 Save Decompressed Stream 을 클릭하고 확장자를 pdf로 저장하면 pdf 파일로 추출할 수 있다.

추출한 pdf를 열려고 하니 잠겨있다. 


온라인 pdf 잠금 해제 하는곳에서 잠금 해제를 할 수 있다

https://smallpdf.com/kr/unlock-pdf


잠금 해제된 pdf를 다시 열면 키값을 찾을 수 있다.






'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 29  (0) 2019.02.09
[SuNiNaTaS] Forensic 28  (0) 2019.01.31

문제를 보면 3가지의 문제가 있고, 파일을 다운로드하면 메모리 덤프 파일을 얻을 수 있다.


메모리 분석 툴인 볼라틸리티(volatility)를 활용해서 풀어보겠다.

우선 imageinfo를 활용하여 이미지의 정보를 확인해 보았다.

이 정보를 확인 해야 이것을 활용하여 다른 명령어가 사용 가능하다.

정보를 확인하면 Windows7 OS를 사용하고 있고, --profile 옵션으로 프로필 정보를 써야 다른 정보를 얻을 수 있다.


첫 번째 문제인 김장군 PC의 IP 주소는 netscan 명령을 이용하여 확인할 수 있다.

위 정보를 보면 IP 주소는 192.168.197.138 이다.


두 번째 문제인 기밀문서 파일명은 프로세스 정보를 확인하여 실행한 프로세스들의 정보를 확인해 보아야겠다.

프로세스들의 부모자식 관계를 보여주는 pstree 명령으로 확인을 해 보았다.

정보를 확인해 보면 cmd 프로세스를 통해 notepad(메모장)가 실행되었다.


cmdscan명령을 통해 cmd로 실행한 notepad의 정보를 더 얻을 수 있다.

파일명과 그 파일의 경로를 알 수 있다. 파일 명은 SecreetDocument7.txt 이다.


세 번재 문제인 문서의 내용을 보려면 파일 추출 도구인 r-studio를 이용하여 저 문서의 내용을 확인 할 수 있다.

데모 버전을 사용하여도 기본적인 파일 추출은 가능하다.

메모리 덤프 파일을 스캔한 후에 cmdscan으로 얻은 경로에 들어가보면 문서를 확인할 수 있다.

key값은 4rmy_4irforce_N4vy 이다.


답들을 조합하여 md5로 해시하면 문제가 해결 된다.






'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 29  (0) 2019.02.09
[SuNiNaTaS] Forensic 28  (0) 2019.01.31
[SuNiNaTaS] Forensic 26  (0) 2019.01.27

조건식이 참이면 수행 후 다시 조건식 비교


[기본 구조]

while 조건식:

수행문


조건식에 들어가는 변수는 조건 비교를 위해 사용되는 변수로 미리 만들어 놓지 않으면 오류가 난다.


@ 반복 횟수 지정

1
2
3
4
5
count = int( input("반복 횟수 입력") )
 
while count > 0 :
    print("count = {}".format(count))
    count -= 1
cs

count의 값이 0보다 크면 수행된다.

print 의 내용을 출력하고 count의 값을 1씩 감소한다.

count의 값이 0이 되면 반복문이 수행되지 않는다.


@ 특정 조건 반복

1
2
3
num = 0
while num != 9 : 
    num = int( input("9를 입력하면 종료 : ") )
cs

num이 0이 아니면 반복한다.



'Language > Python' 카테고리의 다른 글

멜론차트 1~50위 크롤링  (0) 2019.09.02
반복문(for)  (0) 2019.03.07
조건문(if)  (0) 2019.02.08
입력 함수(input)  (0) 2019.02.08
bool 자료형  (0) 2019.02.07

문제 파일을 다운로드 받으면 Windows7(SuNiNaTaS) 라는 파일이 다운로드 된다.


이 파일을 HxD에 넣어 파일 시그니처를 확인 해 보면 

egg 파일이다. 확장자를 .egg로 바꾸어 확인을 해보면 

vmware 가상머신 파일임을 알 수 있다.

가상머신을 실행 시켜보면 Windows7로 부팅할 수 있는데 부팅을 하면 

30초 뒤에 자동으로 꺼지도록 설정이 되어 있다.

cmd에서 shutdown /a 명령어로 설정을 제거한다.


첫 번째 문제는 네이버에 들어가면 사이버 경찰청 홈페이지로 들어가지는 원인을 찾아야 한다.

hosts파일이 변조되어 naver 주소가 사이버 경찰청 ip로 연결 되어 있는 것 같다.

hosts 파일의 경로는 C:\Windows\System32\drivers\etc 에 있다.

이 폴더를 보면 hosts파일이 있는데 txt 파일이다. hosts파일은 원래 txt 파일이 아니다. 

폴더 옵션에서 숨김파일 표시로 설정하게 되면 

hosts 파일이 나타나게 된다. 

hosts 파일을 메모장으로 열어보면 key값이 보인다.


두 번째 문제를 보면 키 로거의 절대 경로 및 파일명을 알아내라고 한다.

컴퓨터에서 최근위치를 가보면 여러 폴더들이 있는데 그중 v1valv 폴더에 들어가 보면 C:\v196vv8\v1valv\Computer1\24052016 #training\ss 경로에 

9.jpg 파일을 보면 키 로거의 절대 경로를 알 수 있다.


세 번째 문제를 보면 키로거가 다운로드된 시간은 BrowsingHistoryView 라는 프로그램을 써서 

모든 시간대로 설정하고 프로그램을 실행시키면 다운로드된 시간을 찾을 수 있다.


네 번째 문제를 보면 키로거를 통해 알아내고자 했던 내용은 

2번 문제를 해결하기 위해 접속했던 C:\v196vv8\v1valv\Computer1\24052016 #training 폴더에 z1.dat 파일을 메모장으로 열어보면 key 값이 보인다.


4개의 답들을 조합하여 md5로 해시하면 문제가 해결된다.









'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 28  (0) 2019.01.31
[SuNiNaTaS] Forensic 26  (0) 2019.01.27
[SuNiNaTaS] Forensic 21  (0) 2019.01.24

+ Recent posts