代码执行函数:
eval把字符串都作为PHP代码执行,很多常见的webshell都是用eval来执行具体操作的
assert也是把字符串作为PHP代码执行
preg_replace 是正则表达式函数 、也可做匿名函数
包含函数:
文件包含函数主要作用为包含并运行指定文件
include $file,如果$file 可控的情况下,我们就可以包含任意文件了,从而达到getshell的目的
包含函数也能够读取任意文件内容,这就需要用到支持的协议和封装协议的过滤器
通过这种方法回显出base64加密的源代码
php://filter/convert.base64-encode/resource=index.html
命令执行函数:
exec()执行一个外部程序
system()执行外部程序,并且显示输出
思路:
1)了解整个目录
2)浏览系统运行的代码顺序
3)定位关键字
原理:在数据交互中,前端的数据传到后台进行处理时,没有做严格的判断过滤。导致传入的“数据”拼接到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)函数返回一个字符串结果。