面试题

1 自我解释

学校,专业,经历,爱好,最好按照简历来说

2 常见数据库端口

关系型数据库
Oracle --- 1521
MySQL --- 3306
SQL Server --- 1433
Sybase --- 5000
DB2 --- 5000
PostgreSQL --- 5432

NOSQL数据库
MongoDB --- 27017
Redis --- 6379
Memcached --- 11211

原文链接:https://blog.csdn.net/wangnan537/java/article/details/51819520

3

 SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。 SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台 都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令, 这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。

 

0x01 大小写绕过
0x02 宽字节注入
0x03 正则替换绕过
0x04 二次urldecode注入
0x05 十六进制绕过
0x06 空格绕过
0x07 注释符绕过
0x08 逗号绕过
0x09 比较符号绕过
参考:https://uuzdaisuki.com/2018/04/01/sql%E6%B3%A8%E5%85%A5%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%95%E8%BF%87%E6%96%B9%E6%B3%95/

一、严格的数据类型

在Java,C#等高级语言中,几乎不存在数字类型注入,而对于PHP,ASP等弱类型语言,就存在了危险。

防御数字型注入相对简单,如果不需要输入字符型数据,则可以用is_numeric()、ctype_digit()等函数判断数据类型。

二、特殊字符转义

字符型注入一般需要单引号闭合,首先想到的应对方法,就是字符转义。

在PHP中可用addslashes()函数进行转义字符,可以将单双引号、反斜线及NULL加上反斜线转义。还可以通过过滤关键字,如:select,union select , order by ,information, table,等等。

在特殊字符转义时,还有另一种更加难以防范的sql注入:二次注入攻击。

我们写入数据  admin',会变成  admin\',但是在插入的数据库时是不带有反斜杠的, 也就是说数据库中的数据还是  admin',这样的话,如果这个网站有另一个地方查询这个字段的内容,就造成了二次注入攻击。

三、使用预编译语句

预编译技术可以有效的防御sql注入,我开发是个弱鸡,就不细细讲解了。

采用预编译技术要注意,不要使用动态拼接sql语句。

简单来说,动态拼接语句就是字符串连接变量的意思,如:

变量="select.......where id = "+变量;

总之,在存在sql语句的代码中,一定要谨慎,最好不要用动态拼接SQL语句。
参考:https://www.cnblogs.com/whitehawk/p/9880184.html
在php手册中'PDO--预处理语句与存储过程'下的说明:

很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。预处理语句可以带来两大好处:
查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。当查询准备好后,数据库将分析、编译和优化执行该查询的计划。对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度。通过使用预处理语句,可以避免重复分析/编译/优化周 期。简言之,预处理语句占用更少的资源,因而运行得更快。
提供给预处理语句的参数不需要用引号括起来,驱动程序会自动处理。如果应用程序只使用预处理语句,可以确保不会发生SQL 注入。(然而,如果查询的其他部分是由未转义的输入来构建的,则仍存在 SQL 注入的风险)。
预处理语句如此有用,以至于它们唯一的特性是在驱动程序不支持的时PDO 将模拟处理。这样可以确保不管数据库是否具有这样的功能,都可以确保应用程序可以用相同的数据访问模式。
PHP使用了PDO还可能存在sql注入的情况
第一种情况
Pdo 直接使用 query 或者 exec 来执行 sql 语句时,不经过预编译,直接执行,所以没有起到防注入的作用。

第二种情况
在 sql 语句预编译之前,修改了 sql 语句。

PDO 预编译,预先编译一下,php 会把 sql 语句先放到数据库去执行一下。

所以说,就算污染了 sql 语句,导致在预编译之后,无法传入变量,执行语句也没关系.因为在预编译之时,sql 语句已经被执行了。
第三种情况
PHP Pdo 本地模拟 sql 预编译,可能存在宽字节注入。
参考:https://cloud.tencent.com/developer/article/1180847

4 .Mysql写Webshell有几种方式,利用条件

select ... into outfile
需要满足的条件
对web目录有写权限
GPC关闭(GPC:是否对单引号转义)
有绝对路径(读文件可以不用,写文件需要)
没有配置secure-file-priv

general_log
需要满足的条件
对web目录有写权限
GPC关闭(GPC:是否对单引号转义)
有绝对路径(读文件可以不用,写文件需要)
需要能执行多行SQL语句
 
参考:https://www.cnblogs.com/jerrylocker/p/10890128.html

5 Mysql4和5的区别

mysql5可以用存储过程。

6 SQL注入的分类,盲注,盲注函数,报错注入原理,函数,如果过滤了单引号,怎么绕过

分类:

1、常见的sql注入按照参数类型可分为两种:数字型和字符型。

2、也可以根据数据库返回的结果,分为回显注入、报错注入、盲注。

3、按照注入位置及方式不同分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,无论此种分类如何多,都可以归纳为以上两种形式。

1.floor()
2.extractvalue()
3.updatexml()
4.geometrycollection()
5.multipoint()
6.polygon()
7.multipolygon()
8.linestring()
9.multilinestring()
10.exp()

会使用到引号的地方一般是在最后的where子句中。如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句:

selectcolumn_namefrominformation_schema.tableswheretable_name="users"

这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。

users的十六进制的字符串是7573657273。那么最后的sql语句就变为了:

selectcolumn_namefrominformation_schema.tableswheretable_name=0x7573657273
参考:
https://www.anquanke.com/post/id/170626
https://uuzdaisuki.com/2018/04/21/sql%E6%B3%A8%E5%85%A5%E7%9B%B2%E6%B3%A8%E6%97%B6%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0/
https://www.cnblogs.com/wangtanzhi/p/12577891.html
https://blog.csdn.net/whatday/article/details/63683187
https://www.jianshu.com/p/48a935b123ce

7.phpmyadmin日志shell

 

 

 

 

 

 https://xz.aliyun.com/t/3283

8.OS——shell 原理

 原理简述

就是简单的上传一个 cmd shell
使用--os-shell需要的条件

FILE 权限
可写的结对路径
PHP GPC off

参考:https://blog.sari3l.com/posts/8dea0d95/

9. order by 注入

排序。 默认为asc 升序 如在结尾加 desc 则为降序

10.limit注入

limit

LIMIT[位置偏移量,]行数

其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开始显示,索引值从0开始,即第一条记录位置偏移量是0,第二条记录的位置偏移量是1,依此类推...,第二个参数为“行数”即指示返回的记录条数。

11.IIS短文件名漏洞原理和利用

IIS短文件名是一个Windows系统为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。当这种特性被IIS中间件继承后,我们就可以使用短文件名进行目录猜解。
当我们访问一个长名称目录的时候:http://192.168.1.1/administrator

这个administrator目录可以根据Windows 8.3格式简写为admini~1

根据这个上述格式,我们访问/admini~1也可以相当于访问administrator
1. 深入爆破猜测文件全名

2. 结合支持短文件特性软件(Apache、Wordpress)

3. 绕过Basic and Windows认证

https://payloads.online/archivers/2018-04-27/2
https://www.freebuf.com/articles/web/172561.html

12.解析漏洞原理和利用方式

https://blog.csdn.net/qq_34444097/article/details/82810283

13.熟悉的中间件,以及中间件漏洞的利用方式。weblogic,tomcat,thinkphp,struts2,nginx, apache

https://www.freebuf.com/articles/web/192063.html

14.java反序列化漏洞,php反序列化漏洞

posted @ 2020-05-22 09:44  vcxvxcv  阅读(354)  评论(0)    收藏  举报