PHP代码审计上传后删除漏洞
Wireshark安装使用备忘
Wireshark安装使用备忘
官网
流量包资源
- Web 2.0 for packets | pcapr - 提供大量样本的社区
- automayt/ICS-pcap - 各类工控的 pcap 包
- ICS-Security-Tools/pcaps - 各类工控的 pcap 包
在线分析
BurpSuite学习
Burp Suite
资源
- Mr-xn/BurpSuiteSuite-collections - 有关 burpsuite 的插件(非商店),文章以及使用技巧的收集
- snoopysecurity/awesome-burp-extensions - burp 相关资源(英文版)
- alphaSeclab/awesome-burp-suite - burp 相关资源(中文版)
教程
宽字节注入及数据库编码分析
mysql的编码
在mysql中有几种常见编码:
1 | mysql> show variables like 'character%'; |
在默认情况下, mysql字符集为latin1, 而执行了set names utf8; 以后, character_set_client, character_set_connection, character_set_results 等与客户端相关的配置字符集都变成utf8, 但character_set_database, character_set_server 等服务端相关的字符集还是latin1, 因为这一条语句, 导致客户端和服务端的字符集出现了差别, 既然有差别, mysql在执行查询的时候, 就设计到字符集的转换。
我们用php连接mysql服务器的时候设置的编码set names gbk, 就等同于:
1 | set character_set_client='gbk' //客户端编码 |
连接顺序为: 客户端 <= 连接器 <= 服务端 , 这中间如果有哪一个编码不一致就很容易导致乱码的问题,
2008年鸟哥曾在博客中讲解了Mysql字符集:(http://www.laruence.com/2008/01/05/12.html)
MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
进行内部操作前将请求数据从character_set_connection转换为内部操作字符集
宽字节注入
在使用php连接mysql服务器的时候, 当设置 "set character_set_client=gbk"(设置其他两个不会触发sql注入) 这时就会导致一个编码转换的注入问题, 也就是我们熟悉的宽字节注入
我们来分析下, 当我们提交id=1%df’ 的时候,假设后端用了addslashes函数处理sql语句变成了select * from articles where id=1%df\'
如果php 连接mysql的时候设置了client客户端的字符集为gbk, 那么mysql服务器对查询语句就会进行GBK转码, mysql服务器数据库一般都是latin1编码,而gbk是两个字符表示一个汉字,因此,`%df 和转义字符%5c就会组成成一个%df%5c的汉字, 吃掉了一个转义符,导致单引号逃逸
解决方法:
- 一般官方推荐把charackter_set_client 设置为binary 或utf-8
- 使用mysql_real_escape_string()函数, 该函数会自动识别编码问题
另外在高版本的mysql中好像修复了该问题
范围: 据gbk编码,第一个字节ascii码大于128, 即0x81~0xff
mysql的其他编码问题
mysql的编码问题还会导致如下问题
1 | <?php |
核心代码如上
那么,为什么执行SELECT * FROM user WHERE username='admin\xC2' and password='admin'却可以查出用户名是admin的记录?
当设置客户端的字符集位utf8的时候,这时mysql的编码转换为:
utf8-utf8-latin1
最后执行将数据库里的admin 和传入的admin\xC2 进行比较的时候, admin是一个latin1字符串
猜测原因是Mysql在转换字符集的时候, 将不完整的字符给忽略了
绕过disable_functions技巧
PHP代码审计CheckList
API安全CheckList
FCKeditor上传漏洞总结
FCKeditor上传漏洞总结
0x01 FCKeditor简介
FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、 JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的 “FCK” 是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。FCKeditor 相容于绝大部分的网页浏览器,像是 : Internet Explorer 5.5+ (Windows)、Mozilla Firefox 1.0+、Mozilla 1.3+ 和 Netscape 7+。在未来的版本也将会加入对 Opera 的支援。
0x02 判断版本
常见判断版本方法有两个:
XSS靶场挑战记录
XSS靶场挑战记录
知识点
- 无过滤 XSS (level 1)
- 各种难度的构造闭合 XSS (level 2、3、4、5、6)
- 各种难度的绕过过滤 XSS (level 2、3、4、5、6)
- 双写拼接 XSS (level 7)
- 实体编码+HTML 编码 XSS (level 8、9)
- input 中的 XSS (level 10)
- HTTP headers 头中的 XSS (level 11、12、13)
- exif XSS (level 14)
- angularjs XSS (level 15)
- URL 编码 XSS (level 16)
- embed 标签的 XSS (level 17、18)
- Flash XSS (level 19、20)