n=int(input())
ans=input().split()
test=input().split()
dic={}
cnt=0
for i in range(n):
    dic[ans[i]]=i
for i in range(n):
    for j in range(i+1, n):
        if dic[test[i]]<dic[test[j]]:
            cnt+=1
print(str(cnt)+"/"+str(n*(n-1)//2))

<코드 설명>

해전의 개수인 n을 먼저 입력받는다.

그리고 올바른 정답인 ans와 현우가 작성한 답안인 test를 입력받는다.

n만큼 for문을 통해 ans원소의 순서를 dic에 저장해주었다.

이중 for문을 통해 test의 순서가 ans의 순서와 동일한 지 확인해주고, 맞다면 cnt값을 증가시킨다.이렇게 구한 cnt값과 총점인 n*(n-1)//2을 출력해준다.

 

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 17413 단어 뒤집기 2  (1) 2022.11.20
[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 4889 안정적인 문자열  (0) 2022.11.13
[BOJ] 14425 문자열 집합  (0) 2022.11.06
[BOJ] 16499 동일한 단어 그룹화하기  (0) 2022.11.06

ans=[]
while True:
    arr=input()
    st=[]
    cnt=0
    if '-' in arr:
        break
    for i in arr:
        if i=='{':
            st.append('{')
        else:
            if st:
                st.pop()
            else:
                cnt+=1
                st.append('{')
    cnt+=len(st)//2
    ans.append(cnt)
for i in range(len(ans)):
    print(i+1, '. ', ans[i], sep='')

<코드 설명>

while문을 이용해 무한반복해주며, arr를 input받는다.

입력의 마지막 줄은 '-'가 한 개 이상 주어지기 때문에 '-'가 arr에 포함되면 break해준다.

 

arr의 현재 문자가 '{'일 때, st(스택)에 이를 append해준다.

arr의 현재 문자가 '}'일 때, st가 비어있지 않을 때 pop을 해준다. st가 비어있을 때는 안정적이지 않은 상태이므로 cnt값을 1 증가시켰고, 안정적이지 않은 상태를 바꿔주기 위해 '{'를 st에 append해준다.

 

st의 길이/2를 cnt에 더해주고, 이렇게 구한 cnt값을 ans배열에 추가시켜주었다.

 

ans배열의 원소를 모두 출력시켜주었다.

 

 

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1543 문서 검색  (0) 2022.11.13
[BOJ] 3077 임진왜란  (0) 2022.11.13
[BOJ] 14425 문자열 집합  (0) 2022.11.06
[BOJ] 16499 동일한 단어 그룹화하기  (0) 2022.11.06
[BOJ] 13417 카드 문자열  (0) 2022.11.06

위는 Challenge 23의 초기 화면이다.

script 태그를 주입하는 것이 미션이라고 한다.

 

<script>alert(1);</script>를 입력하고 제출버튼을 눌러주었더니 no hack이라는 문구가 출력되었다.

그리고 url이 다음과 같이 변경되었다.

index.php?code=%3Cscript%3Ealert%281%29%3B%3C%2Fscript%3E

 

몇 개 입력을 해보았더니 문자를 2개 이상 붙여 입력해주면 no hack이라는 문구가 떴다.

 

연속적인 문자열 입력을 막기 위해 null 바이트 (%00)을 글자 사이마다 넣어서 입력해보았다.

index.php?code=%3C%00s%00c%00r%00i%00p%00t%00%3E%00a%00l%00e%00r%00t%00%28%001%00%29%00%3B%00%3C%00%2F%00s%00c%00r%00i%00p%00t%00%3E
 
이를 url에 입력해주었더니 성공할 수 있었다.

'Web Hacking > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Challenge 36  (1) 2022.11.19
[webhacking.kr] Challenge 47  (0) 2022.11.06
[webhacking.kr] Challenge 27  (0) 2022.10.09
[webhacking.kr] Challenge 25  (0) 2022.10.02
[webhacking.kr] Challenge 19  (0) 2022.09.24

pw에 preg_match 함수를 통해 싱글쿼터(')가 필터링되어 있다.

 

%(퍼센트), _(언더스코어) 와일드 카드 
- % : 아무 문자열(빈 문자열 포함) 대체 와일드 카드
- _ : 단일문자 대체 와일드 카드 (언더스코어 하나 당 문자 하나를 의미)
ex1) k% : k로 시작하는 문자열
ex2) %k% : k가 들어가는 문자열
ex3) k__ : k로 시작하는 세글자 문자열

 

이와 같이 ?pw=9%라고 해주었더니 pw 첫번째 자리가 9임을 알 수 있었다.

 

이런식으로 브루트 포스를 통해 숫자값을 대입해준다.

 

?pw=902% 를 입력하였을 때, Hello guest가 아닌 Hello admin이 출력되며 Clear할 수 있었다.90까지는 guest와 pw가 동일했는데 2부터 달라진다고 볼 수 있을 것 같다.

 

 

 

'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글

[Lord of SQL Injection] succubus  (0) 2022.11.19
[Lord of SQL Injection] Giant  (0) 2022.11.06
[Lord of SQL Injection] Bugbear  (0) 2022.10.09
[Lord of SQL Injection] darkknight  (0) 2022.10.02
[Lord of SQL Injection] Golem  (0) 2022.09.24

+ Recent posts