虽然市情上的代码审计的文章已经一大把了,但是还是决定重复造轮子,打算作为一个系列来写的,近年越来越多的安全研究职员投入到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']);