CTF中的Web
Contents
#基础要求
Mysql,Oracle,Mssql,Access等SQL语法的细微区别
PHP,Java,JS,Ruby,Python,Lua等编程语言特性
Tomcat,IIS,Apache,Nginx,WebLogic,JBoss,Jetty等Web服务器特性
-举例
Access 查询数据 偏移注入 跨库查询
#基础
一、爆破,包括包括md5、爆破随机数、验证码识别等
二、绕WAF,包括花式绕Mysql、绕文件读取关键词检测之类拦截
三、花式玩弄几个PHP特性,包括弱类型,strpos和===,反序列化+destruct、\0截断、iconv截断、
四、密码题,包括hash长度扩展、异或、移位加密各种变形、32位随机数过小
五、各种找源码技巧,包括git、svn、xxx.php.swp、www.(zip|tar.gz|rar|7z)、xxx.php.bak、
六、文件上传,包括花式文件后缀 .php345 .inc .phtml .phpt .phps、各种文件内容检测<?php <? <% <script language=php>
、花式解析漏洞、
七、Mysql类型差异,包括和PHP弱类型类似的特性,0x、0b、1e之类,varchar和integer相互转换
八、open_basedir、disable_functions花式绕过技巧,包括dl、mail、imagick、bash漏洞、DirectoryIterator及各种二进制选手插足的方法
九、条件竞争,包括竞争删除前生成shell、竞争数据库无锁多扣钱
十、社工,包括花式查社工库、微博、QQ签名、whois
十一、windows特性,包括短文件名、IIS解析漏洞、NTFS文件系统通配符、::$DATA,冒号截断
十二、SSRF,包括花式探测端口,302跳转、花式协议利用、gophar直接取shell等
十三、XSS,各种浏览器auditor绕过、富文本过滤黑白名单绕过、flash xss、CSP绕过
十四、XXE,各种XML存在地方(rss/word/流媒体)、各种XXE利用方法(SSRF、文件读取)
十五、协议,花式IP伪造 X-Forwarded-For/X-Client-IP/X-Real-IP/CDN-Src-IP、花式改UA,花式藏FLAG、花式分析数据包
#脑洞汇总
源代码
robot.txt
comment
vim_swap_file
.pyc
.DS_Store
.git
.svn
bak file
waf
字符替换空型waf
特殊字符(串)拦截型waf
#CTF Trick
PHP弱类型
序列化/反序列化
XSS+CSRF+SSRF+RCE+Upload
源码审计
CSRF的利用
XSS
-基础弹窗
1 | <script>alert("XSS")</script> |
-总结
1 | 1.输入在标签间:测试<>是否被过滤 |
-分类
1.反射型XSS
2.存储型XSS
修改参数,提交后查看页面源代码,寻找输出位置
例:
1 | 输出在<b>标签中 不需要闭合 直接XSS |
tips:选择框可以BP改 注意每一个Post参数
转义尖括号 “闭合 标签内构造属性
例:
1)href属性 构造JS伪协议javascript:alert(docment.dcmain)
2)Domain被过滤javascript:alert(docment.d,o.m.a.i.n)
3)把script/on/style/
大小写过滤:<iframe src="data:text/html;base64,......."></iframe>
(创建子窗口在父窗口弹窗)
4)><
均被转义 输出在JS的字符串当中 可以使用JS字符串的编码方式/unicode编码/八进制编码
5)输出在注释里 payload:换行+%0Aalert(1);//
6)反斜杠干掉双引号 中间变成一串字符串;用//注释掉多余的东西;=的优先级问题可以==替代;function XXX(){}优先级最高 防止提示未定义;空格用/**/
替代
7)换行问题 用/链接字符串 加%c0吃掉转义符
*尽量少用//
注释 \
转义
3.Dom-XSS
4.跨域问题:
-同源:协议、域名、端口(默认80)相同
-非同源:cookie/LocalStorage/IndexDB无法读取 DOM无法获得 AJAX请求不能发送
-二级域名相同(父子、兄弟域:允许通过设置document.domain共享cookie
-跨域请求:JSONP WebSoket CORS
-JSONP注入:通过添加一个<script>
元素,通过src属性向服务器请求json数据,服务器将数据放在一个指定名字的回调函数返回 foo({“ip”:”8.8.8.8
“})
(不造是啥但能执行 )callback/jsonp/…=.(函数名)..
的API
-防御:校验referer(但可从HTTPS向http发请求或在src中用data:base64)
callback=alert(1);//有反射型注入
-CORS:允许浏览器向不同源服务器发出任何请求
-简单请求:head/get/post
-加origin头:如果可以会回acess-control-allow-origin
等
双方withCredentials:true且acess-control-allow-origin不为*
才能接受cookie
-预检请求
-回旋镖
-穿甲伤害
CSRF
html css flash
SQLi
各种绕过。。
文件包含和文件上传
伪协议
各种校验
.htaccess文件
变量与函数:一切输入都是有害的,一切进入函数的变量都是有害的
参数传递
可控变量
敏感功能点
通读代码
变量覆盖
危险函数
代码审计
常见功能点漏洞
登陆认证功能
SQL注入
Cookie认证问题
危险函数
pars_str()
import_request_variables
变量覆盖
工具
BP
Sqlmap
union注入
有回显
猜解字段数目 limit a,b
最方便
报错注入
boolean盲注
写脚本
截取字符串 left substr mid regexp if
Timing盲注
无回显
效率低
文件读写
select LOADFILE(‘/etc/passwd’);之类的写shell进去也可以
waf
双写关键字 seselectlect OorR
大小写
编码绕过(直接认识16进制)
变换姿势 <—> || && 空格 select(username)from(admin) 科学计数法绕过 where username=1e1union select in,between,like access中info=dlookup()
特殊字符 /**/``内联注释``%00``% 反引号
写脚本
http://58.154.33.13:8003/?order=if((select(mid(flag,1,2))from(flag)),name,price
)
1 | ‘a’ 11000110 |
#杂技
二次注入
宽子节注入
Access偏移注入
万能密码
Mongodb注入
隐蔽注入
Mysql过长截断
#文件包含
LFI
读取敏感文件
包含一句话木马getshell
包含日志文件getshell
读取页面源代码
/about.php?f=php://filter/convert.base64-encode/resource=index.php