博客长期更新中,随时可能推倒重写
WEB并非主攻方向,博主目前的WEB水平至多是小学二年级水平
一、通用过程
- 按F12看一眼源代码里有没有注释提供提示
- 必要时可能还需要修改源代码?
- 如果进去后是一个不知所以的页面,往往是SQL注入,或者尝试寻找源代码进行代码审计(代码泄漏)
- WEB协议相关知识点很少作为独立考点,往往是作为解题工具
- 常见的备份文件格式:.git .svn .swp .svn .~ .bak .bash_history
- 比如主页文件是index.php,那么它的备份可能就是index.php.bak,此时直接作为url输入即可下载备份,
如[ www.baidu.com/index.php.bak ](然而百度的并不能)
- 比如主页文件是index.php,那么它的备份可能就是index.php.bak,此时直接作为url输入即可下载备份,
- robots协议:参考博客
- cookies、会话:参考博客1、参考博客2
- GET转POST:参考博客
- 主要是记住这句话
【CTF总结-WEB篇】Content-Type: application/x-www-form-urlencoded
- XFF、Referer:参考博客
- 待补充
2. md5、sha1碰撞
3. 序列化与反序列化
4. PHP伪协议
待补充
四、SQL注入 0. 常用信息速查
- 关键表
- sqlite:SQLITE_MASTER表的sql列
- mysql:information_schema库的columns表(information_schema.columns表)
- sqlserver:
- Oracle:
- 常用的内敛注入特征值
文章图片
- 数据库注释
文章图片
文章图片
- 判断是数值型还是字符串型注入
数值型:select colName from tableName where id = 1
字符串型:select colName from tableName where id = ‘1’2. 开始注入
- 进过上一过程之后,应该大致清楚了该网站所用数据库的类型(sqlite、mysql、sqlserver等)
- 通过order by [数字] 确定列数(可以二分查找)
- 使用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的代理,没走自己设置的代理
推荐阅读
- 解护网杯一道web(EasyChallenge)
- ctf|ctf-htctf-misc
- C++|一些关于程序内存布局的问题
- QCTF 2018xman夏令营选拔赛
- 第一届桂林电子科技大学绿盟杯CTF大赛 wp
- Capture the flag
- CTF|BUUOJ [2019红帽杯]easyRE
- Buuctf -web wp汇总(二)
- #|CTF-网络信息安全攻防学习平台(脚本关)
- ctf