Xctf isc-07 apache2解析漏洞,php弱类型

Xctf isc-07
题目描述:工控云管理系统项目管理页面解析漏洞
Xctf isc-07 apache2解析漏洞,php弱类型_第1张图片
找到index.php页面,有一个view source点击查看
Xctf isc-07 apache2解析漏洞,php弱类型_第2张图片
Xctf isc-07 apache2解析漏洞,php弱类型_第3张图片
Xctf isc-07 apache2解析漏洞,php弱类型_第4张图片
审计三个php代码段可以找到突破点
第一段是个简单重定向,get参数page不为index.php即可
Xctf isc-07 apache2解析漏洞,php弱类型_第5张图片
第二段 需要得到一个admin的session,之后可以post传入con与file两个参数
File参数是自定义的文件名字,之后会处理为backup/文件名
这里对文件名进行了过滤,防止后缀名是php的文件。
上传成功后,会切换到uploaded目录,创建文件,并将con的内容写入,
那么实际文件的路径就是:uploaded/backup/xxx.xxx
Xctf isc-07 apache2解析漏洞,php弱类型_第6张图片
第三段代码是对get参数id进行校验,如果id的浮点数不是1,且最后一位是9那么,实行查询语句,如果查询正确,会得到一个admin的session
Xctf isc-07 apache2解析漏洞,php弱类型_第7张图片
分析完三段php代码思路就很清晰了。
通过构造id参数,得到admin的session,在绕过正则过滤上传一个php文件,将getshell语句写入变量con post传递过去,最终拿到flag.php文件即可。
Payload
Xctf isc-07 apache2解析漏洞,php弱类型_第8张图片
Id:利用php的弱类型,随意构造“1字符9”的形式即可,
注意,这里使用了严格的sql关键字过滤函数,所以对id参数很难使用sql语句进行注入,那么为了能够查询到正确数据,实际查询语句必须是有意义的,在不知道表里有几行数据时,就查询第一行,即id=1,但又要绕过第一次校验,让id为1a9即可,这样在执行查询语句时会转化成 select * from cetc007.user where id=’1’(sql语句也有类似php的弱类型的特点)
Xctf isc-07 apache2解析漏洞,php弱类型_第9张图片
如下图可以直接看到,sql查询语句把12a9带有字符后面的a9都过滤掉了,依旧成功查询
Xctf isc-07 apache2解析漏洞,php弱类型_第10张图片
File: 2.php.xxx
绕过file的方法有三种

  1. 服务器解析漏洞
  2. 中间件解析漏洞
  3. .htacess文件
    Xctf isc-07 apache2解析漏洞,php弱类型_第11张图片
    抓包看返回头部中间件是apache2
    Apache2在解析文件时是从右到左的特性,先解析最右的一个后缀,如果无法识别就往前解析到能识别的后缀名,以此后缀名解析文件。本题中,2.php.xxx会被解析成2.php

查看目录,上传成功
Xctf isc-07 apache2解析漏洞,php弱类型_第12张图片
连接菜刀
Xctf isc-07 apache2解析漏洞,php弱类型_第13张图片
打开flag.php文件,拿到flag
Xctf isc-07 apache2解析漏洞,php弱类型_第14张图片

你可能感兴趣的:(ctf,php,sql)