NaNNaNNaNNaN-Batman
- 下载附件 将末尾的eval改为alert
- 将代码放入新建的1.html文件
- 会弹框出代码内容
- 复制粘贴 代码审计
function $()
{
var e=document.getElementById("c").value;
if(e.length==16)
if(e.match(/^be0f23/)!=null)
if(e.match(/233ac/)!=null)
if(e.match(/e98aa$/)!=null)
if(e.match(/c7be9/)!=null){
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o){
document.write(s[o%4][0]);
s[o%4].splice(0,1)}
}
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _
- 可以拼正则
payload:be0f23233ace98aac7be9
- 也可以把代码单独拿出来
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o){
document.write(s[o%4][0]);
s[o%4].splice(0,1)}
}
web2
- 就是一个解密 直接用菜鸟工具 自带的php
- 先审计一下代码
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
$_o=strrev($str);
// 反转字符串
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
//从首位开始一个一个截取
$__=ord($_c)+1;
//返回ascii值 并且+1
$_c=chr($__);
//返回+1后的编码值
$_=$_.$_c;
//连接
}
return str_rot13(strrev(base64_encode($_)));
// base64编码 反转字符串 再rot13编码
}
highlight_file(__FILE__);
?>
- 解密php代码
<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
$_ = base64_decode(strrev(str_rot13($str)));
$_o=NULL;
for($_0=0;$_0<strlen($_);$_0++){
$_c=substr($_,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_o=$_o.$_c;
}
echo strrev($_o);
?>
PHP2
- 第一道复现失败的题目
- 尝试了dirsearch 还有burpsuit抓包 都没找到切入点
- 看了下wp
- 访问index.phps
phps文件就是baiphp的源代码文件,通常用于提供给用户(访zhi问者)查看php代码dao,因为用户无法直接通过Web浏览器直接看到php文件的内容
- 想给你看的代码
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?
- 简单的代码审计
- 首先get上传的id不能等于admin
- 接着进行了一次url解码 又要求等于admin
- 重点就再url解码上了呗
- ?id=%2561dmin
- 经过服务器的url解码后 第一次if就是admin===%61dmin 不满足
- 再经过php自己加的就可以满足了
unserialize3
- 这道题是_wakeup()魔术方法的绕过
- 反序列化的时候会调用_wakeup()函数
- 这里先给序列化的代码
<?php
class xctf{
public $flag = '111';}
$a = new xctf();
$b = serialize($a);
echo $b;
?>
- O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;}
- payload:O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}