Hacking PHP
0X01 SQL注入
这里主要是PHP的防范注入的几个配置,注入手法不再赘述
magic_quotes_gpc
对 $_GET $_POST $_COOKIE 变量中的 ' " \ 空字符(NULL) 进行转义。但这个特性在 PHP5.3.0 中已经不推荐使用,并且在 PHP5.4.0 中已经移除。注意它并不会过滤 $_SERVER
magic_quotes_runtime
对从数据库或文件中获取的数据进行过滤,过滤内容与 magic_quotes_gpc 一致。但在PHP5.4中被废弃。
magic_quotes_sybase
将 $_GET $_POST $_COOKIE 变量中的'替换为",并对空字符(NULL)`进行转义。此选项会完全覆盖magic_quotes_gpc。
safe_mode
safe_mode在 PHP5.3.0 中废弃, PHP 5.4.0 中移除。
0X02 XSS
htmlspecialchars()默认只过滤"
0X06 文件操作
文件操作包括上传,读取,写入,下载,包含,删除。
文件包含
文件包含分为本地文件包含(LFI),远程文件包含(RFI)。进行远程文件包含需要allow_url_include = On。远程文件包含也可以通过PHP的输入/输出流 php:// 或伪协议 data:// 来实现
如果文件包含被加以某种限制,如 include($_GET['file'].'.html')。这里给出几种bypass的方法
- 通过
%00截断的方式来进行包含。但是这要在未对NULL字符进行过滤的情况下。而且在 PHP5.3 之后的版本无法利用。 - 利用多个
.来进行截断。windows下需要>=240个,linux下>=2040个。这种方法同样在 PHP5.3.0 后被修复 - 特别的,当可以进行远程文件包含时,我们可以利用URL中的
? #来实现截断。file=http//www.example.com/shell.php?, 这样.html会被认为成请求参数
文件上传
- 利用apache或iis6.0的解析漏洞
php3 php4 php%20绕过%00截断,如1.php%00.jpg- 更改文件头
content-type0X07 代码执行
代码执行相关函数
eval() assert() preg_replace() call_user_func() call_user_func_array() array_map() array_filter() array_reduce()等
0X08 命令执行
命令执行相关函数 exec() system() shell_exec() passthru() pcntl_exec() popen() proc_open(), 除此之外被反引号括起的字符串也会被当做命令执行
0X09 变量覆盖
变量覆盖漏洞是指用户传入的变量会将程序内部原有变量的值覆盖。可能引发变量覆盖漏洞的函数有 extract() parse_str()
PHP中的可变变量也可以导致变量覆盖,比如下面的过滤操作
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$$_key = addslashes($_value);
}
}
变量覆盖漏洞一般需要和其他的攻击方式进行结合。
Hacking PHP的更多相关文章
- ★Kali信息收集~ 1.Google Hacking + Github Hacking
一.google hacking site site:cnblogs.com 毒逆天 intitle intitle:login allintitle allintitle:index of alli ...
- 狗汪汪玩转无线电 -- GPS Hacking
狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...
- GnuRadio Hacking②:使用SDR嗅探北欧芯片无线键盘鼠标数据包
0×00 前言 上半年的时候安全公司Bastille Networks(巴士底狱)安全研究员发现大多数无线鼠标和接收器之间的通信信号是不加密的,黑客可对一两百米范围内存在漏洞的无线键鼠进行嗅探甚至劫持 ...
- GnuRadio Hacking①:使用GnuRadio+SDR破解固定码无线遥控
0×01 信号捕获 在这篇文章中,我们将使用GnuRadio+SDR硬件对某品牌型号的无线跳蛋进行无线重放攻击的演示. 市面上常见的无线遥控工作的频段,通常工作在315Mhz.433Mhz,也有少数的 ...
- GSM Hacking Part② :使用SDR捕获GSM网络数据并解密
0×00 在文章第一部分 GSM Hacking Part① :使用SDR扫描嗅探GSM网络 搭建了嗅探GSM流量的环境,在第二部中,我们来讨论如何捕获发短信以及通话过程中的流量,从捕获到的数据中解密 ...
- 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...
- Redis代码阅读之Hacking Strings
Hacking Strings The implementation of Redis strings is contained in sds.c ( sds stands for Simple Dy ...
- RFID Hacking④:使用ProxMark3 破解门禁
文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 前言 国际黑客大会Defcon传统之一:开锁!因为黑客认为锁也是一种安全挑战.我们在黑客题材电影.电视剧中也常常 ...
- Rootkit Hacking Technology && Defence Strategy Research
目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...
- 黑客讲述渗透Hacking Team全过程(详细解说)
近期,黑客Phineas Fisher在pastebin.com上讲述了入侵Hacking Team的过程,以下为其讲述的原文情况,文中附带有相关文档.工具及网站的链接,请在安全环境下进行打开,并合理 ...
随机推荐
- BZOJ 1355: [Baltic2009]Radio Transmission AC自动机/KMP
被一个KMP傻题搞蒙圈了,此题AC自动机空间超限,只能用KMP写(我只会AC自动机QAQ)...... AC自动机 Code: // luogu-judger-enable-o2 #include & ...
- 再见,OI(2019退役祭)
有些话应该藏在心里,有些事情只属于自己. (想了一下,自己的OI生涯.自己所经历的事情还是留在自己的心里吧,一是自己文笔不好,二是每个人的世界观不同对事情的看法不同) 不要轻易地去评价一个人,每个人背 ...
- -2 caffe数据结构
一.Blob 使用: 访问数据元素: 计算diff: 保存数据与读取数据: 二.Layer 三.Net
- SpringBoot2整合activiti6环境搭建
SpringBoot2整合activiti6环境搭建 依赖 <dependencies> <dependency> <groupId>org.springframe ...
- 【hdu 4135】Co-prime
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 让你求出[a..b]这个区间内和N互质的数的个数; [题解] 利用前缀和,求出[1 ...
- SpringBoot 对静态资源的映射规则
一.所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源 webjars:以jar包的方式引入静态资源,如下:引入 jquery ...
- [Windows Server]新机子上装老系统·
硬盘模式改了也得用U大师,然后再PE里装 1.U大师做启动盘 2.拷贝解压后的系统进去 3.用PE自带安装工具
- Python Study (06)内存管理GC
对象在内存的存储,我们可以求助于Python的内置函数id().它用于返回对象的身份(identity).其实,这里所谓的身份,就是该对象的内存地址. a = 1 print(id(a)) #1124 ...
- Android框架简要介绍
1. Android架构直观图 下图展示了Android系统的主要组成部分: 总体上而言,Android系统结构由5个部分组成.从上到下,别人是Applications (Android应用 ...
- android开发一些小bug
1.一定要注意findViewId这种方法,尤其是含有多个同样的R.id的名字时,debug时不会当场报错.但随后会报空指针错误 2.List转换为Array能够这样处理: ArrayList< ...