专栏首页黑白安全PHP代码审计入门之路

PHP代码审计入门之路

0x01 前言

虽然市面上的代码审计的文章已经一大把了,但是还是决定重复造轮子,打算作为一个系列来写的,近年越来越多的安全研究人员投入到php应用的漏洞挖掘,相对应的代码安全问题也被大量的暴露出来,身处这个时代,我很高兴身边的白帽子前辈不断寻求突破并丰富和完善了代码审计这个概念,学到今日,笔者也想总结自己的一套审计的经验只谈,希望可以帮助新人更加友好的入门这个领域。

0x02 准备 技术准备:PHP基础,MySql 使用工具:Visual Studio 服务器环境:xampp 推荐使用:phpStudy

0x03 脑图

脑图主要总结了sql注入、xss跨站脚本攻击、csrf、xsrf、文件操作相关得漏洞、代码&&命令执行、设计缺陷以及SSRF七种常见漏洞,每种漏洞都有很多种的情况与案例,后面的文章会陆续把这些做成案例分享给大家。这篇首先介绍一下SQL注入漏洞,csrf与xsrf我分为了一种。

0x04 SQL注入入门 注入的主要原因是程序员在写sql语句的时候没有根据使用的场景进行过滤导致的外部可以任意操作执行的sql,另外SQL语句有Select、Insert、Update和Delete四种类型,注入也是对这四种基本操作的拼接产生的。接下来笔者将以Select为例引导新手初步了解SQL注入。Select是数据库的查询操作,所以常常出现在一个网站的查看列表,详情,搜索这些地方,缺陷代码如下

浏览器输入:http://127.0.0.1/test/test.php?id=1

然后在浏览器输入:http://127.0.0.1/test/test.php?id=1'

在次在浏览器输入:http://127.0.0.1/test/test.php?id=1' and '1'='2

这次可以发现没有数据输出了 因为我们执行的语句中  goods_id 不止需要 等于1  并且还需要 string(1) = string(2) 才返回真  但是  string(1)永远不可能等于string(2) 所以条件不满足不返回数据, 从这里我们可以知道,我们外部带入的语句被成功的带入数据库并且查询了,所以可以判断有sql注入。

Mysql注释: 从‘-- ’序列到行尾。请注意‘--’的后面有个空格,注释风格要求第2个破折号后面至少跟一个字符(例如空格、tab、换行符、字符串等等)。 从‘#’字符从行尾。 从/*序列到后面的*/序列。结束序列不一定在同一行中,因此该语法允许注释跨越多行。

下面的例子显示了3种风格的注释: mysql>SELECT 1+1;    # mysql>SELECT 1+1;    -- mysql>SELECT 1 /* xxxxxx */ + 1;

获取表字段数:

可以看到页面现在返回的是 正常的说明这表列数大于1,自己加大直到爆错

一直输到8页面爆错了,说明我们这个表的字段数小于8,那么就是说此表的字段为7

页面输出了1,2,3,4,5,6,7 这些都是输出点

分别输出了当前连接的用户,数据, 服务器版本

获取全部的库

获取test库的所有表

获取16进制: SELECT hex('test'); 结果74657374 加上0x+74657374 16进制:0x74657374 http://127.0.0.1/test/test.php?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x74657374

table_schema === 库名16进制编码 table_name    === 表名16进制编码

获取 tdb_admin 表的所有字段

获取 tdb_admin 表数据

0x05 修复方法

$id=@intval($_GET['id']);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你的隐私正在被泄露

    之前跟朋友谈天说地,聊到了国内关于用户隐私的问题,这是一个很深沉的话题,深到我都不敢开口,万一我说的话被泄漏了呢?朋友让我看了 2018 年 4 月 12 日的...

    C4rpeDime
  • 工信部:发现多起利用新冠肺炎疫情实施网络攻击的行为

    近期,工业和信息化部网络安全威胁信息共享平台收到网络安全企业及机构报告,发现多起利用新冠肺炎疫情实施网络攻击的行为。

    C4rpeDime
  • 充电宝植入木马、指纹密码锁被破解……原来,网络安全如此重要!

    科技的发展、大数据时代的来临、无人机、智能手表、智能手机、二维码、指纹认证、人脸识别......智能设备、现在技术已经渗透在我们的生活的方方面面。

    C4rpeDime
  • 解决mysql中limit和in不能同时使用的问题

    两种方式推荐第一种。避免了in语句。进行explain诊断会发现第一种效率高很多。

    陈灬大灬海
  • 【C++100问】C/C++程序执行过程详解之预处理、编译、汇编、链接和执行,以及g++_gcc的安装使用

    文章首发于本人CSDN账号:https://blog.csdn.net/tefuirnever

    我是管小亮
  • 文件上传总结

    我们在做渗透测试的时候会经常遇到存在命令执行的Windows服务器,而且不能上传shell,唯一的入口就是命令执行,这种情况下,我们需要向服务器上传一个大一点的...

    用户5901555
  • windows命令执行上传文件的姿势

    我们在做渗透测试的时候会经常遇到存在命令执行的Windows服务器,而且不能上传shell,唯一的入口就是命令执行,这种情况下,我们需要向服务器上传一个大一点的...

    信安之路
  • 数据库DNSLog外带注入-总结

    当我们对一个数据库进行注入时,无回显,且无法进行时间注入,那么就可以利用一个通道,把查询到数据通过通道带出去,这里的通道包括:http请求、DNS解析、S...

    Gamma实验室
  • AB test | 数据分析师面试必知 !

    关于AB test的重要性无需多言,数据、产品等从业人员几乎必知,好的数据科学家我想一定是知道理解业务比模型更为重要,而AB test就是伴随着业务增长的利器。

    数据森麟
  • 数据分析面试中需要你必知必会的内容 !

    关于AB test的重要性无需多言,数据、产品等从业人员几乎必知,好的数据科学家我想一定是知道理解业务比模型更为重要,而AB test就是伴随着业务增长的利器。

    1480

扫码关注云+社区

领取腾讯云代金券