일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- over the wire
- php
- sql injection
- php login page
- Cookie
- BANDiT
- ssrf
- tryhackme
- THM
- access control
- php 로그인 페이지 만들기
- SQLi
- FTZ
- active reconnaissance
- php To Do List
- php 파일 업로드하기
- Recon
- Leviathan
- active recon
- php file upload
- Cryptography
- War Game
- Authentication
- overthewire
- Server Side Request Forgery
- privilege escalation
- file upload
- 파일 업로드 취약점
- OS Command Injection
- Reconnaissance
Archives
- Today
- Total
R's Hacking Daily Log
Natas8 본문
http://natas8.natas.labs.overthewire.org
익숙한 페이지의 모습..
이번에도 input과 관련된 문제인 듯하다.
정보수집부터 해보자! View source code 클릭
(흠. 이번엔 보기 좋게 색깔을 입혀놨군)
이전 문제보다 코드가 조금은 복잡한 느낌이다.
주목해야 할 부분은 여기
제출 버튼을 누르면 입력된 값과 Post array의 secret key에 대한 값을 비교.
두 값이 동일하면 natas9의 passwd가 제공되는 방식이다.
POST array에서 secret 키가 갖는 값이 뭔지 모르지만, 여기서 $encodedSecret값을 대놓고 적어놓았다!
fuction encodedSecret을 보면, $secret값을 이렇게 저렇게 요리조리 해서
반환한 값을 if문에서 $encodedSecret과 비교하게 된다.
그렇다면, input에 입력해야 할 secret 값을 얻기 위해서 function의 흐름을 반대로 실행하면 된다!
encodedSecret == bin2hex(strrev(base64-encode(secret)))이므로 secret을 얻기 위해서는
1. hex2bin (hex-> string)
2. strrev (string array reverse)
3. base64_decode (base64형식으로 decode)
$encodedSecret의 값을 hex2bin 처리하면 문자열이 나올 것이다.
그 문자열을 strrev 처리하면 단순히 문자의 순서가 뒤집힌다. (ex. apple -> elppa)
뒤집은 문자열을 base64 decode 해주면 input에 입력해야 할 secret값이 나오게 되는 것!
그대로 해봤더니, secret 값이
oubWYf2kBq
이렇게 나왔다.
바로 input에 집어넣어~
제출 버튼을 눌러보니
natas9의 password가 나온 것을 볼 수 있다.
Comments