CTF--http

CTF

[极客大挑战 2019]Http1

题解:

1. 查看源代码,发现文件Secret.php

2. 查看后发现提示“It doesn't come from 'https://Sycsecret.buuoj.cn'”,记录跳转位置的请求头是refer,更改refer为'https://Sycsecret.buuoj.cn'

3. 提示“Please use "Syclover" browser”,user-agent为记录你的浏览器信息的,在user-agent中添加Syclover。

4. 发现提示显示你无法读取到本地,用X-Forwarded-For: 127.0.0.1查看本地,得到flag

[RoarCTF 2019]Easy Calc1

  1. 查看网络源代码发现文件名“calc.php”
  2. 进入文件后发现被过滤的字符,发现“;”没有被过滤
  3. 构造payload(ps:?后需有空格)

    /calc.php? num=2;var_dump(scandir(chr(47)))
  4. 发现“f1agg”文件名比较特别
  5. 构造payload(ps:?后需有空格)

    /calc.php? num=2;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
  1. 得到flag

[极客大挑战 2019]BuyFlag1

1.点击menu进入payflag

2.查看网页源代码得到提示

<!--
    ~~~post money and password~~~
if (isset($_POST['password'])) {
    $password = $_POST['password'];
    if (is_numeric($password)) {
        echo "password can't be number</br>";
    }elseif ($password == 404) {
        echo "Password Right!</br>";
    }
}
-->

3.由于类型为post型,使用hackbar输入post数据:password=404

发现并无变化,更改post数据为:password=404a(函数is_numeric()判断其中的参数是数字还是其他)

回显提示:Only Cuit's students can buy the FLAG

4.使用bp抓包,发现Cookie: user=0,将0更改为1。

得到提示: you are Cuiter

                Password Right!
                Pay for the flag!!!hacker!!!

5.回到源码提示“post money and password”,输入post数据:money=100000000&password=404a

发现提示:you are Cuiter

                Password Right!
                Nember lenth is too long

6.考虑到strcmp()函数,将数据进行绕过:money[]=100000000&password=404a

7.得到flag

[BJDCTF2020]Easy MD51

1.进入后发现网站源码没有提示,使用bp抓包,发现代码

Hint: select * from 'admin' where password=md5($pass,true)

为md5函数,输入:ffifdyop

2.发现提示Do You Like MD5?,查看网站源代码,

发现提示:

<!--
$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
    // wow, glzjin wants a girl friend.
-->

为md5函数弱类型比较可以用科学计数法或者数组绕过

3.发现提示:

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
}

为md5函数强类型比较使用数组绕过可得到flag

ezhttp(xyctf)

  1. 进入登陆界面只有登录框,查看源代码发现提示 “
  2. 使用7kbscan扫描网站目录,得到robots.txt路径,在路径下得到l0g1n.txt,访问得到账号密码
  3. 登录发现提示“不是 yuanshen.com 来的我不要”,将Referer修改为yuanshen.com
  4. 得到提示“你用的不是XYCTF的浏览器”,将User-Agent更改为XYCTF
  5. 发现提示“非本地用户禁止访问!”,使用X-Forwarded-For传入127.0.0.1,发现提示“xff 打咩!!!”,使用burp suite插件burpfakeip,删除X-Forwarded-For,继续传入
  6. 提示“不是从 ymzx.qq.com 代理来的我不玩”,使用via进行传入
  7. 提示“有点饿,想吃点XYCTF的小饼干”,直接cookie传入,回显flag

[BJDCTF2020]The mystery of ip

  1. 存在X-Forwarded-For注入
  2. 在bp中添加X-Forwarded-For字段
  3. {{system("ls /")}}
  4. {{system("cat /flag")}}

知识点

1.什么是 Referer?

就是你点击A标签 Referer的信息告诉服务端你从哪里点击出来的。

2.什么是User-Agent?

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。可以抓包进行修改其中的值。

3.什么是X-Forwarded-For?

X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。大概就是传输自己真实的IP地址,阻止匿名请求,但同样的也可以通过抓包进行修改。

4.Referer作用是什么?
1)防盗链

比如办事通服务器只允许网站访问自己的静态资源,那服务器每次都需要判断Referer的值是否是zwfw.yn.gov.cn,如果是就继续访问,不是就拦截。

2)防止恶意请求

比如静态请求是.html结尾的,动态请求是.shtml,那么所有的*.shtml请求,必须 Referer为我自己的网站才可以访问,这就是Referer的作用。

我们通过bp抓包修改referer

5.X-Forwarded-For

这一HTTP头一般格式如下:X-Forwarded-For: client1, proxy1, proxy2, proxy3

其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。

6.url函数构造

var_dump()用来打印

scandir()用来获扫描目录下文件

chr(47)是“/”的ASCII编码

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法

chr(102)是f的ASCII编码

chr(49)是1的ASCII编码

chr(97)是a的ASCII编码

chr(103)是g的ASCII编码

7.strcmp()函数

比较两个字符串

绕过方式:变量后加符号[],将字符串变成数组绕过

8.via报头

一个包含所有中间主机和协议的通用头标,用于满足请求。例如:Via: 1.0 fred.com, 1.1 wilma.com

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空