Skip to content

Latest commit

 

History

History
103 lines (51 loc) · 2.42 KB

代码审计基础.md

File metadata and controls

103 lines (51 loc) · 2.42 KB

PHP代码审计

代码执行函数:

​ eval把字符串都作为PHP代码执行,很多常见的webshell都是用eval来执行具体操作的

​ assert也是把字符串作为PHP代码执行

​ preg_replace 是正则表达式函数 、也可做匿名函数

包含函数:

​ 文件包含函数主要作用为包含并运行指定文件

​ include $file,如果$file 可控的情况下,我们就可以包含任意文件了,从而达到getshell的目的

​ 包含函数也能够读取任意文件内容,这就需要用到支持的协议和封装协议的过滤器

通过这种方法回显出base64加密的源代码

php://filter/convert.base64-encode/resource=index.html

命令执行函数:

​ exec()执行一个外部程序

​ system()执行外部程序,并且显示输出

web漏洞审计

思路:

​ 1)了解整个目录

​ 2)浏览系统运行的代码顺序

​ 3)定位关键字

SQL注入:

​ 原理:在数据交互中,前端的数据传到后台进行处理时,没有做严格的判断过滤。导致传入的“数据”拼接到SQL语句中,被当做SQL语句的一部分执行。从而导致数据库受损(被脱库、数据被删除、甚至整个服务器权限沦陷)。

sql注入点:

1、登录框

2、查询

3、订单

4、获取http头

...

SQL注入常见过滤方式:

编码保护

1、函数错误使用:stripslashes函数、str_replace函数

2、二次注入:

​ addslashes 插入到数据库中的内容还是原样

​ 在取出数据的时候,没有再进行下一步的验证,就会造成二次注入

​ 1、通过危险函数定义变量(被过滤掉的)

​ 2、再次利用(二次)

​ 3、构造payload去利用

注释

1、–+空格

2、#

3、/!数字 xxxxx/ 第一位是主版本号,第二位是0,剩余是次版本号,大于这 个数字没回显

字段表示

1、column=xxx[正常表示]

2、任意符号.“.column=xxx

显错注入

extractvalue(‘anything’【目标xml文档】,concat【xml路径】)能查询字符串的 最大长度为32

updatexml(‘anything’【目标xml文档】,concat【xml路径】,’anything’【更新的内容】)

concat(‘str1【0x7e|0x3A】’,’str2【查询数据库的语句】’)

concat_ws(‘str1【连接符0x7e|0x3A】’,’str2【0x7e|0x3A】’,’str3【查询数据库的语句】’)

group_concat(column)函数返回一个字符串结果。