드림핵 사이트의 연습 문제를 풀어보았다. (https://dreamhack.io/wargame/challenges/413/)
<html>
<head></head>
<link rel="stylesheet" href="/static/bulma.min.css" />
<body>
<div class="container card">
<div class="card-content">
<h1 class="title">Online Curl Request</h1>
<?php
if(isset($_GET['url'])){
$url = $_GET['url'];
if(strpos($url, 'http') !== 0 ){
die('http only !');
}else{
$result = shell_exec('curl '. escapeshellcmd($_GET['url']));
$cache_file = './cache/'.md5($url);
file_put_contents($cache_file, $result);
echo "<p>cache file: <a href='{$cache_file}'>{$cache_file}</a></p>";
echo '<pre>'. htmlentities($result) .'</pre>';
return;
}
}else{
?>
<form>
<div class="field">
<label class="label">URL</label>
<input class="input" type="text" placeholder="url" name="url" required>
</div>
<div class="control">
<input class="button is-success" type="submit" value="submit">
</div>
</form>
<?php
}
?>
</div>
</div>
</body>
</html>
코드 분석
취약점 분석
fingerprinting: .../ 모의해킹시 정보 수집 단계를 가리키는 말.
procedural: 절차상의
oriented: ...지향적인, 우선인, 중요시하는
paradigm: 패러다임, 범례, 모범
whereas: (두 가지를 비교할 때) ...한 반면에
snippet: (작은) 정보, 소식, ...
enhance: (가치 등을) 향상시키다, 높이다
interfere: 간섭, 개입 하다
prerequisite: 전제 조건
versatility: 다양성, 다재다능함
compatible: 호환이 되는, ..
assumption: 추정, 가정
as opposed to: ...와 대조적으로, ...이 아니라
featured: ...를 중심으로 한, 주연의, ...
reliable: 믿을 수 있는, 믿을 만한
get a foot in the door: 첫발을 들여놓다, 기회를 얻다
adhere: 고집하다, 부착되다, ...
KISS(Keep It Simple and Short) principle: 상품 및 광고는 가능한 단순해야 한다는 원칙
circumvent: (법, 규제 등을) 우회하다, 피하다
prepend: 접두어를 붙이다, 표현이나 구문을 덧붙이다
assessment: 평가
warranty: 품질 보증서
merchantability: 상품성, 매매할 수 있음