ctf 杂录


各种姿势

php特性

  1. $_SERVER[‘QUERY_STRING’]会获取到所有的文件后面传递的所有参数
  2. php自身在解析请求时,会把+和.解析成下划线
  3. 数组与数字比较,永远大于数字
  4. 字符a在和整形进行弱类型比较时,会被强制转换成整形,其值为0

    php伪协议

file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

php://filter
  1. 经常使用的伪协议,一般用于任意文件读取,有时也可以用于getshell.在双OFF的情况下也可以使用.
  2. php://filter是一种元封装器,用于数据流打开时筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用。类似readfile()、file()、file_get_contents(),在数据流读取之前没有机会使用其他过滤器。
  3. 用于直接读取用户的根目录的东西

    url=php://filter/read=convert.base64-encode/resource=flag

    php://input
  4. php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。

    使用时令参数赋值 php://input
    利用hackbar使用post 传递命令 <?php system(‘ls’)?> (列举所有文件)

服务器自身漏洞

一句话木马

  1. 上传点存在白名单验证,从返回包可以得知其是apache2.2.15,apache2.2.15版本具有文件解析漏洞,可以把test.php.png当作php文件来解析执行,apache高版本不存在此漏洞,这里我们可以使用apache2.2.15的解析漏洞来绕过白名单限制

    <?php system($_POST[‘cmd’]); ?>
    之后再利用post 发送数据, cmd = cat /flag 获取flag

xss 漏洞

xss介绍

是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行

域名解析

到 文件里改就完事了

c:\windows\system32\drivers\etc\hosts
前面是ip 后面是域名

php九大内置变量

分析php的9大内置变量

$_POST [用于接收post提交的数据]
$_GET [用于获取url地址栏的参数数据]
$_FILES [用于文件就收的处理img 最常见]
$_COOKIE [用于获取与setCookie()中的name 值]
$_SESSION [用于存储session的值或获取session中的值]
$_REQUEST [具有get,post的功能,但比较慢]
$SERVER[是预定义服务器变量的一种,所有SERVER[是预定义服务器变量的一种,所有_SERVER [是预定义服务器变量的一种,所有_SERVER开头的都
$GLOBALS [一个包含了所有全局变量的数组]
$_ENV [ 是一个包含服务器端环境变量的数组。它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它]

http系列

referer (你从哪里来)

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,
告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
简而言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,
一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。
比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

绕过问题

大小写绕过

  1. 随便把content-type的内容进行大小写更改

    Content-Type: mULtipart/form-data; boundary=—————————4827543632391 #修改大小写绕过

  2. 然后黄爆爆破尾缀

    改成php+数字的格式,比如php1,php2啥的

  3. 靶机
    http://123.206.87.240:8002/web9/