PHP代码审计入门-SQL注入水篇

0x00  写在前面

最近先感冒后发烧,因身体不适很久没有更新学习记录。

从零学习php,最终目的实现代码审计入门,软件采用sublime text,环境使用phpstudy搭建,数据库是navicat,需要有基本的前端基础、简单的php+mysql后端基础、渗透知识和漏洞原理,文章跟随流沙前辈学习记录,看看曾经遥不可及的代码审计能不能慢慢啃下来。

需要有SQL注入漏洞知识,对常见的注入类型要会操作。

本章为代码审计入门学习第三篇,前辈讲解了常见注入类型,这些东西对我还是比较简单,但是既然是学习,就按着过程把SQL注入的常见类型水一遍,没啥技术含量。


0x01  联合注入

order by 用来查询表的字段个数。表中有四列,查询第五列时报错。

PHP代码审计入门-SQL注入水篇_第1张图片

union 联合查询。select查询时对应每个字段(也就是列),不能多也不能少。

PHP代码审计入门-SQL注入水篇_第2张图片

 进入正题,靶场搭建完毕,简单用search传参,发现下面有输出。

PHP代码审计入门-SQL注入水篇_第3张图片

打开search.php简单看一下,发现指向search.html

PHP代码审计入门-SQL注入水篇_第4张图片

原来作者为了方便学习,直接把输出结果。

PHP代码审计入门-SQL注入水篇_第5张图片

 回到页面,发现执行的sql语句。闭合过程不写了,直接写过的不少文章都被河蟹。要是日站时候都是这样的注入,做梦都能笑醒。唯一需要注意的是,有时候查表不行的时候可以转十六进制绕一下。

PHP代码审计入门-SQL注入水篇_第6张图片

PHP代码审计入门-SQL注入水篇_第7张图片

 0x02 布尔注入

mid()字符串截取

PHP代码审计入门-SQL注入水篇_第8张图片

 ord()返回对应的ASCII码函数

PHP代码审计入门-SQL注入水篇_第9张图片

 length()函数,返回长度

PHP代码审计入门-SQL注入水篇_第10张图片

在搜索框闭合然后查询,数据库名为11个字符,简单判断a%' and length(database())>12%23,没啥意思不写了。

PHP代码审计入门-SQL注入水篇_第11张图片

要想靠盲注手动一个一个猜解对方的数据库工作量实在太大, 在实际工作中都是拿sqlmap跑,再不济也会用burp来fuzz。

 0x03 时间注入

sleep()函数个人理解就是延时,如果延时成功就说明大概率存在,放sqlmap直接跑

PHP代码审计入门-SQL注入水篇_第12张图片

 if()函数,第一个是条件,true返回第二个,false返回第三个

PHP代码审计入门-SQL注入水篇_第13张图片

简单判断 a%' and if(length(database())>1,sleep(5),0) %23  ,不写了

PHP代码审计入门-SQL注入水篇_第14张图片

  0x04 报错注入

三个报错函数updatexml()、floor()、extractvalue(),之间文章详细研究过updatexml()的原理有兴趣的可以自行看看;extractvalue()类似;floor()研究过但没有写。报错注入有自己一套的报错语法规则,理解即可,不写了。

 0x05 insert注入

这里是展示一下insert注入,注入类型远远不止这些。insert注入实际情况不常用也不常见,项目不可能对数据库直接操作,万一搞崩了有责任担当不起;挖洞的话既然都有注入了为啥要用insert,工作一年多没见人用过。

PHP代码审计入门-SQL注入水篇_第15张图片

 0x06 总结

注入当然还有很多类型,比如堆叠注入、二次注入等等,之前国hw某信面试时也问到了,但是文章在csdn被河蟹并且链接也不可以给,有兴趣了解的同学可以去知乎搜索相同ID。

你可能感兴趣的:(代码审计,php,开发语言,网络安全)