PHP代码审计学习-PHP-Audit-Labs-day1】的更多相关文章

前言 正式开始代码审计的学习,拓宽自己的知识面.代码审计学习的动力也是来自团队里的王叹之师傅,向王叹之师傅学习. 这里参考了一些前辈,师傅的复现经验和bluecms审计的心得 安装 install.php 搭建完成 seay自动审计 文件包含漏洞 /user.php 742-751行 elseif ($act == 'pay'){ include 'data/pay.cache.php'; $price = $_POST['price']; $id = $_POST['id']; $name =…
一.开始代码审计之旅 01 从今天起,学习代码审计了,这篇文章就叫代码审计01吧,题目来自 PHP SECURITY CALENDAR 2017 的第一题,结合 红日安全 写的文章,开始吧. 二.先看这道题目 1.题目名称:Wish List 2.in_array() 函数的作用 in_array() 函数的作用是判断第一参数是否存在第二个参数中,存在返回 true,不存在返回 false.需要注意的是,如果函数第三个参数为 true,则第一个参数必须还要和第二个参数同类型,函数才能返回 tru…
原文:http://paper.tuisec.win/detail/1fa2683bd1ca79c 作者:June 这是一次分享准备.自己还没有总结这个的能力,这次就当个搬运工好了~~ 0x01 工具准备 PHPSTORM,不只是编程. 个人觉得只要能够提供全局搜索.单页搜索.函数跳转的编辑器就能够满足要求.一般在审计的时候,先找到一个入口点,配合代码和浏览器,一边下断点,一边打印变量,再在浏览器上观察反应. 自动化审计工具,食之无味,弃之可惜. 当然,我手边能用到的自动化审计工具就是能在网上找…
Swift 2.0学习笔记(Day1)——我的第一行Swift代码 原创文章,欢迎转载.转载请注明:关东升的博客 当第一次看到下面代码时我石化了,这些代码是什么东东?单词拼出来的? import Foundation var str = "Hello World" print(str) 晕晕.好吧,低头继续往下看,哦明白了 第一句:import Foundation 表示引入Foundation框架. 什么是Foundation框架? Foundation是OS X和iOS应用程序开发…
写在前面:我是一名在学习linux的小学生,最近在学习python时,我的老师推荐了github上的一本教材“python100day”,100day里面的内容由浅入深,且都具备详细的例子,对于我这个初学者简直是打开了新世界的大门.linux100day,是我受到python100day的启发,遂想结合自身的学习经历,写出的对于linux一些入门知识的梳理.但对于linux本人也是个菜鸟,充其量只能算是对于自己所掌握知识的总结,水平有限,望诸君多多包涵. 什么是linux操作系统? 操作系统,是…
0x01 前言 偶然间看到红日团队的PHP代码审计教程,想起之前立的flag,随决定赶紧搞起来.要不以后怎么跟00后竞争呢.虽然现在PHP代码审计不吃香,但是php代码好歹能看懂,CTF中也经常遇到,挖洞也能用,所以学一手还是有作用的. 0x02 in_array() 函数 in_array :(PHP 4, PHP 5, PHP 7) 功能 :检查数组中是否存在某个值 定义 : bool in_array ( mixed $needle , array $haystack [, bool $s…
学习代码审计,自己简单记录一下.如有错误望师傅斧正. PHPCMS预备知识 PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口. 参数名称 描述 位置 备注 m 模型/模块名称 phpcms/modules中模块目录名称 必须 c 控制器名称 phpcms/modules/模块/*.php 文件名称 必须 a 事件名称 phpcms/modules/模块/*.php 中方法名称 PHPCMSV9…
PHP代码审计SQL注入漏洞 0x00 首先明确什么是SQL注入,SQL语句必须掌握. 常见的注入总的来说可以分为两大类:数字型和字符型. 这两类中包含了诸如报错注入,宽字节注入,盲注,二次注入,cookie注入,POST注入等等. 因为我大一已经花了大量时间来研究sql注入,这里就不细写了,有兴趣的师傅可以看看sql注入天书. ps:数字型注入不需要闭合,字符型需要闭合. 0x01 注入的利用方式 1:查询数据 2:读写文件 3: 执行命令 0x02 盲注 在sql注入过程中,sql语句执行的…
PHP代码审计-php安全基础 php.ini选项 register_globals php>=4.2.0,php.ini 的 register_globals 选项的默认值预设为 Off,当 register_globals 的设定为 On 时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于 PHP不必事先初始化变量的值,从而导致很大的安全隐患. 实例1 //ex1.php <?php if (check_admin()) { $is_admin = true; } if…
文件下载漏洞 漏洞代码: <% function download(f,n) on error resume next Set S=CreateObject("Adodb.Stream") S.Mode= S.Type= S.Open S.LoadFromFile(f) then Reaponse.status=" else Response.ContentType="application/octet-stream" Response.AddHea…
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip") response.write server.createobject("wscript.shell").exec("cmd.exe /c ping "&ip&"").stdout.readall %> 利用方式: http:…
1.ASP上传过程抓包分析: POST /4.asp HTTP/1.1 Host: 192.168.1.102 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-U…
XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEncode(string):HTMLEncode 方法对一段指定的字符串应用 HTML 编码.修复代码如下: <% xss=request("xss") xss=Server.HTMLEncode(xss) response.write(xss) %> 关于我:一个网络安全爱好者,…
ASP注入漏洞 一.SQL注入的原因 按照参数形式:数字型/字符型/搜索型 1.数字型sql查询 sql注入原因: ID=49 这类注入的参数是数字型,SQL语句原貌大致如下: id=request.querystring("id") sql="select * from 表名l where 字段= "&id sql注入产生,sql闭合 注入的参数为 ID=49 And [查询条件],即是生成语句: sql="Select * from 表名 wh…
1.什么是序列化 A.PHP网站的定义: 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示.unserialize()函数能够重新把字符串变回php原来的值. 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字. 按个人理解就是: serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象. 当然从本质上来说,反序列化的数据本身是没有危害的,用户可控数据进行反序列化是存在危害的. B.PH…
[1]可能存在命令执行漏洞的函数: 00x1:常用的命令执行函数:exec.system.shell_exec.passthru 00x2:常用的函数处理函数:call_user_func.call_user_func_array.file_get_contents.....更多函数处理函数传递门:http://www.php.net/manual/zh/book.funchand.php 函数处理函数的使用:<?php $a = "phpinfo()";call_user_fu…
全局变量与超全局变量 $GLOBALS $GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问,$GLOBALS 是一个包含了全部变量的全局组合数组.变量的名字就是数组的键. $SERVER $SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建. $ _ REQUEST PHP $ _ REQUEST 用于收集HTML表单提交的数据. $…
filter_var()函数 filter_var() 函数通过指定的过滤器过滤一个变量.如果成功,则返回被过滤的数据.如果失败,则返回 FALSE. filter_var(variable, filter, options) 过滤器种类很多 这个函数按理来说没有什么问题,但是在使用FILTER_VALIDATE_URL时会把伪协议当做URL处理,从而就造成了绕过. 题目解答 先看源码 <?php $url = $_GET['url']; if(isset($url) && filt…
在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下.如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS.SQL注入.命令执行……等等,逆向查找变量能够快速定位漏洞是否存在,本次已SQL注入为例. 本文作者:黑客小平哥,i春秋首发 前言 本篇文章原本是个PPT,但是一直放着没有分享,想着闲着也是闲着,那就改成文章发布吧.其实本篇重点在于两个知识点,一个是代码审计的逆向思维,另一个是二次攻击漏洞,其他的我都省略了,就写几…
ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-Security-Learning Web-Security-Learning 学习资料01月29日更新: 新收录文章 mysql SSRF To RCE in MySQL MSSQL MSSQL不使用xp_cmdshell执行命令并获取回显的两种方法 postgresql 渗透中利用postgres…
1.1 流程控制之for循环 1 迭代式循环:for,语法如下 for i in range(10): 缩进的代码块 2 break与continue(同上) 3 循环嵌套 for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s' %(i,j,i*j),end=' ') print() for+else 1.2 开发工具IDE 1.2.1 为何要用IDE 到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件.写…
高级篇主要讲 1. 熟知各个开源框架历史版本漏洞. 2. 业务逻辑漏洞 3. 多线程引发的漏洞 4. 事务锁引发的漏洞 在高级篇审计中有很多漏洞正常情况下是不存在的只有在特殊情况下才有 PHP常用框架 Zendframwork,Yii,Laravel ,.ThinkPHP 这里举例因为thinkphp由国内人开发用户量较多而且历史漏洞也多 Thinkphp历史漏洞很多,对于漏洞形成原因可以自己复现. 篇幅有限只介绍披露漏洞 Query方法 低于3.1.3 有sql注入问题 Order方法 低于…
我们在上一篇文章中学习了DEDECMS的模板标签.模板解析原理,以及通过对模板核心类的Hook Patch来对模板的解析流量的攻击模式检测,达到修复模板类代码执行漏洞的目的 http://www.cnblogs.com/LittleHann/p/3574694.html 通过这段时间的思考,我大概对目前CMS中主流的WEB漏洞进行了大致的分类,这里给朋友们分享一些我的想法: ) 本地变量覆盖类型的漏洞: 在common.inc.php这种本地变量注册的关口进行流量监控,通过正则规则,防止黑客通过…
一.编程与编程语言 编程的目的: 计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果 什么使编程语言? 上面提及的能够被计算机所能表达方式即变成语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人的奴隶,人力编程的目的就是命令奴隶去工作. 什么是编程? 编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是…
目录 为什么用IDE(了解) Pycharm(掌握) Jupyter(掌握) 为什么用IDE(了解) 到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件.写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率. 很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycha…
sql注入l MySqlMySQL False注入及技巧总结MySQL 注入攻击与防御sql注入学习总结SQL注入防御与绕过的几种姿势MySQL偏门技巧mysql注入可报错时爆表名.字段名.库名高级SQL注入:混淆和绕过 MSSQLMSSQL DBA权限获取WEBSHELL的过程MSSQL 注入攻击与防御CLR在SQL Server中的利用技术分析 PostgreSQLpostgresql数据库利用方式PostgreSQL渗透测试指南 MongoDBMongoDB安全 – PHP注入检测 技巧我…
为什么要用IDE? 到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件.写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率. 很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 开发IDE 安装 下载地址:https://www.je…
http://www.cnblogs.com/sean-yao/p/8321034.html 激活码:http://blog.csdn.net/qq_39248703/article/details/73941211?locationNum=13&fps=1 采用在线方式激活: JetBrains 授权服务器(License Server URL):http://idea.imsxm.com 使用方法:激活时选择License server 填入http://idea.imsxm.com 点击A…
DAY0: 中午12点出发,下午5点到 酒店意外豪华 晚上和MG,LYY们定了个寿司套餐 没什么学习就睡觉了 DAY1: 听说RYZ在ZJ的OIer中影响颇深 讲STL的小哥真是对不住因为我是P党 DAY2:毫无印象,下午和晚上浪+背板子 DAY3:一试爆炸,OI再见…
一 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: #计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果. 什么是编程语言? #上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人的奴隶,人类…