ctf-web

ctf-web

  • 信息搜集
  • 认证绕过
  • SQL注入
  • 文件上传
  • 文件包含
  • PHP代码审计

信息搜集

  • 源码泄露

    • 页面源代码

      ctf-web_第1张图片

    • 敏感文件泄漏

      • 备份文件(.swp/.bak/.beifen/~/phps等)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGonEuLW-1604453612546)(https://i.loli.net/2020/11/02/kUboAxLhtRvD85z.png)]

      • 数据库(mdb)
      • 压缩包(zip/tar.gz//DS_Store/WEB-INF/web.xml/cvs/Bazaar/bzr)
  • robots.txt泄漏

    ctf-web_第2张图片

  • 404页面泄漏

  • 协议头泄漏

  • HTTP请求与响应头

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-59VEVNT8-1604453612550)(https://i.loli.net/2020/11/02/dMPgqGHOknzDaW9.png)]

  • JS代码隐藏

ctf-web_第3张图片

  • GIT泄漏

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-67GrN3mI-1604453612554)(https://i.loli.net/2020/11/02/otpkwcUILCgh6ay.png)]

认证绕过

HTTP协议基础

  • HTTP请求(Requests)

    一个HTTP请求包含三个部分:

    • 方法,URL,协议/版本(Method-URI-Protocol/Version)
    • 请求包头(Requests headers)
    • 实体包(Entity body)
  • HTTP响应(Responses)

    一个HTTP响应也包含三个部分:

    • 协议状态代码描述(Protocol-Status code-Description)
    • 响应包头(Response headers)
    • 实体包(Entity body)

HTTP请求报文

HTTP请求由请求行、消息报头、请求正文三个部分组成。

  • 方法,URL,协议/版本(Method-URI-Protocol/Version)
  • 消息报头(Request headers)
  • 请求正文(Entity body)

HTTP请求方法

DELETE DELETE方法用于请求资源服务区删除指定的资源
TRACE TRACE方法一般用于激发一个远程应用层的请求消息回路
CONNECT 为了能动态的切换到隧道的代理
OPTIONS OPTIONS方法用于请求获取URI标识的资源在请求\响应的通信过程中可以使用的功能选项

HTTP请求首部

  • Host:主要用于指定被请求支援的Internet主机和端口号
  • User-Agent:向服务端传递客户端操作系统、浏览器、和其他属性
  • Referer:包含一个URL,代表当前URL的上一个URL
  • Cookie:是一段文本,通常来表示请求者的身份
  • Range:Range可以请求实体部分内容,多线程下载一定会用到此请求头
  • x-forward-for:即XFF头,代表请求端的IP,也可以是多个,中间用逗号隔开
  • Accept:用于指定客户端接收哪些MIME类型的信息
  • Accept-Charset:用于指定客户端接收的字符集
  • 信息:就是实体内容的属性,包括实体信息类型,长度,压缩方法,最后一次修改时间等
  • Content-Type:用于向接收方指示实体的介质类型
  • Content-Encoding:被用作媒体类型的修饰符,表示了已经被用到实体正文的附加内容编 码,想要获得content-type报头域中所引用的媒体类型,必须采用相应的解码机制
  • Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示
  • Last-Modified:用于指示资源的最好修改时间和日期

HTTP响应报文

HTTP 响应(Responses) 也包含三个部分:状态行、 消息报头、响应正文

  • 状态行:协议状态代码描叙(Protocol-Status codeDescription)

  • 消息报头(Response headers)

  • 响应正文(Entity body)

HTTP响应

  • 状态行:HTTP-Version Status-Code Reason-Phrase

    • HTTP-Version表示服务器HTTP协议的版本;

    • Status-Code表示服务器发回的响应状态代码

    • Reason-Phrase表示状态代码的文本描述。

  • 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

    • 1xx:指示信息–表示请求已接收,继续处理,范围是100~101

    • 2xx:成功–表示请求已被成功接收、理解、接受,范围是200~206

    • 3xx:重定向–要完成请求必须进行更进一步的操作,范围是300~305

    • 4xx:客户端错误–请求有语法错误或请求无法实现,范围是400~415

    • 5xx:服务器端错误–服务器未能实现合法的请求,范围是500~505

  • 2、响应报头

  • 3、响应正文就是服务器返回的资源的内容

HTTP常见响应状态码

  • 200:客户端请求成功

  • 302:重定向

  • 404:请求的资源不存在

  • 400:客户端请求有语法错误,不能被服务器所理解

  • 401:请求未授权

  • 403:服务器收到请求,但是拒绝提供服务

  • 500:服务器内部错误

  • 503:服务器当前不能处理客户端的请求,一段时间 后可能恢复正常

HTTP响应首部

  • 服务器根据客户端发送的请求返回的内容

ctf-web_第4张图片

  • Server:服务器所使用的Web服务器名称
  • Set-Cookie:向客户端设置Cookie
  • Last-Modified:服务器通过这个头信息告诉浏览器, 资源的最后修改时间
  • Location:告诉浏览器去访问那个页面,浏览器接收 到这个请求后会立刻访问Location头所指向的页面
  • Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器

常用认证绕过方法

  • 修改get参数
  • 修改post参数
  • 修改cookie参数
  • 等等

SQL注入

sql注入原理

SQL注入可描述为通过在用户可控参数中注入 SQL语法,从而破坏原有的SQL结构,达成攻击行为。

其原因可归纳如下:

  • 程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句
  • 未对用户可控参数进行足够的过滤便将参数内容拼接进入 到SQL语句中

SQL注入类型分类

  • 整型注入

select * from user where id = 1

  • 字符串类型注入

select * from user wher

你可能感兴趣的:(ctf)