CTF总结-WEB篇

博客长期更新中,随时可能推倒重写
WEB并非主攻方向,博主目前的WEB水平至多是小学二年级水平
一、通用过程

  • 按F12看一眼源代码里有没有注释提供提示
    • 必要时可能还需要修改源代码?
  • 如果进去后是一个不知所以的页面,往往是SQL注入,或者尝试寻找源代码进行代码审计(代码泄漏)
  • WEB协议相关知识点很少作为独立考点,往往是作为解题工具
二、WEB协议相关知识点整理
  • 常见的备份文件格式:.git .svn .swp .svn .~ .bak .bash_history
    • 比如主页文件是index.php,那么它的备份可能就是index.php.bak,此时直接作为url输入即可下载备份,
      如[ www.baidu.com/index.php.bak ](然而百度的并不能)
  • robots协议:参考博客
  • cookies、会话:参考博客1、参考博客2
  • GET转POST:参考博客
    • 主要是记住这句话
    【CTF总结-WEB篇】Content-Type: application/x-www-form-urlencoded
  • XFF、Referer:参考博客
  • 待补充
三、PHP代码审计相关知识点整理 1. 源码泄漏
2. md5、sha1碰撞
3. 序列化与反序列化
4. PHP伪协议
待补充
四、SQL注入 0. 常用信息速查
  1. 关键表
  • sqlite:SQLITE_MASTER表的sql列
  • mysql:information_schema库的columns表(information_schema.columns表)
  • sqlserver:
  • Oracle:
  1. 常用的内敛注入特征值
    CTF总结-WEB篇
    文章图片
  2. 数据库注释
    CTF总结-WEB篇
    文章图片

    CTF总结-WEB篇
    文章图片
1. 注入点寻找
  1. 判断是数值型还是字符串型注入
数值型:select colName from tableName where id = 1
字符串型:select colName from tableName where id = ‘1’
2. 开始注入
  1. 进过上一过程之后,应该大致清楚了该网站所用数据库的类型(sqlite、mysql、sqlserver等)
  2. 通过order by [数字] 确定列数(可以二分查找)
  3. 使用UNION进行连表查询,往往是从关键表开始查询,可以通过1或者null来凑列数,比如:
select A,B,C from tableA where id = 1 UNION select 1,sql from sqlite_master
注意:使用UNION连表查询和使用冒号; 作分隔,再写一句的区别主要有两点:首先,前者的UNION后面只能跟SELECT,其次,连表查询和原来的查询语句仍然是一句话,返回一个值,而后者是两句话,返回两个值,事实上后者的第二句话有时候可能会没有变量去接受那个返回值。
待补充
五、踩过的坑
  • 使用Burpsuite的时候,如果发现proxy的options勾不上了,大概率是因为端口冲突,比如它默认的端口8080被其它东西占了,这时候换个端口即可
  • 在设置了代理服务器后,打开proxy后还是拦截不了http请求,这时候可能是因为开着v2ray的缘故,http请求这时候走的是v2ray的代理,没走自己设置的代理

    推荐阅读