CTF入门

tech2025-10-25  2

文章目录

1.phpversion1.1 得到源码1.2 分析源码 2.一道简单的XFF2.1 抓包解题2.2 关于XFF的扩展

1.phpversion

题设

1.1 得到源码

但是通过观察源码并没有发现,不同之处。

所以尝试,是否存在备份源码在服务器中。burp抓包,选择注入点。加载Payload。

选择payload

得到200

1.2 分析源码

<?php ERROR_REPORTING(0); if(!empty($_GET['ver'])==PHP_VERSION){ if($_GET['ver']==PHP_VERSION){ $key = "**********"; } } ?> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>PHP Version</title> </head> <body alink="#007000" bgcolor="#000000" link="gold" text="#008000" vlink="#00c000"> <center> <br><br> <center> <h1>Version</h1> </center> <br> <br> <font color="red">Key Words:</font>PHP Version<br> <br> <div> <form action="" method="POST"> Key: <input type="text" name="key"><br> <input type="hidden" name="ver"><br> <input type="submit" name="Version.php"><br><br><br><br><?php echo $key;?> </form> <br> <br> </form> </center> </body></html>

①对php块进行分析

ERROR_REPORTING(0):关闭PHP的所有报错

第一个判断:若ver传参不为空,且等于PHP版本就可以进入下面

第二个判断:传参等于PHP版本,则输出$key,

<?php echo $key;?> <?php ERROR_REPORTING(0); if(!empty($_GET['ver'])==PHP_VERSION){ if($_GET['ver']==PHP_VERSION){ $key = "**********"; } } ?>

②获得PHP版本

观察了许久没有一个好的思路拿到PHP版本,根据WP学到一手,服务器返回的包给了PHP版本。PHP/5.6.40

③进行传参,得到flag

开始传参PHP/5.6.40始终没有变化,后面5.6.40得到flag

2.一道简单的XFF

2.1 抓包解题

题目:仅允许本地地址访问

尝试更改了HOST以及isadmin字段似乎都没有太大作用。

根据PW,发现只需要X-Forwarded-For=127.0.0.1 ,嗷,~~还不行。。还得是admin。

这样才可以得到flag。

2.2 关于XFF的扩展

IP伪造

TCP/IP层面的IP伪造很难实现,因为更改后很难实现正常的TCP通信,但在HTTP层面的伪造就显得很容易。可以通过伪造XFF头进行IP伪造。所以仅允许本地地址访问,就需要使用X-Forwarded-For来进行构造。

X-Forwarded-For

XFF详细介绍

是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。通俗来说,就是浏览器访问网站的IP 。

其一般形式为:

X-Forwarded-For: client1, proxy1, proxy2, proxy3 //client1 浏览器IP //proxy 依次通过的服务器IP

一般题目思路:

(需要IP伪造,但是包头没有XFF,可以构造XFF)

同时构造自己的IP地址-----------X-Forwarded-For

构造自己来自哪个网址-----------refer

构造自己属于哪个网段--------------X-Forwarded-for:192.XXX

同时构造cookie中的某些参数

注入直接构造sql语句

最新回复(0)