全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  网络安全面试题

【SQL篇】大厂网络安全面试题集合(一)

发布时间:2022-07-14 13:44:00
发布人:syq

  SQL 注入防护

  1、使用安全的 API

  2、对输入的特殊字符进行 Escape 转义处理

  3、使用白名单来规范化输入验证方法

  4、对客户端输入进行控制,不允许输入 SQL 注入相关的特殊字符

  5、服务器端在提交数据库进行 SQL 查询之前,对特殊字符进行过滤、转义、替换、删除。

  6、规范编码,字符集

网络安全面试题

  为什么参数化查询可以防止 sql 注入?

  原理:

  使用参数化查询数据库服务器不会把参数的内容当作 sql 指令的一部分来执行,是在数据库完成 sql指令的编译后才套用参数运行。

  简单的说:参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑。

  SQL 头注入点

  UAREFERERCOOKIEIP

  盲注是什么?怎么盲注?

  盲注是在 SQL 注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在 SQL 注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过 sql 语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用 benchmark,sleep 等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

  宽字节注入产生原理以及根本原因

  产生原理

  在数据库使用了宽字符集而 WEB 中没考虑这个问题的情况下,在 WEB 层,由于 0XBF27 是两个字符,在 PHP 中比如 addslash 和 magic_quotes_gpc 开启时,由于会对 0x27 单引号进行转义,因此 0xbf27会变成 0xbf5c27,而数据进入数据库中时,由于 0XBF5C 是一个另外的字符,因此\转义符号会被前面的 bf 带着"吃掉",单引号由此逃逸出来可以用来闭合语句。

  在哪里编码

  根本原因

  character_set_client(客户端的字符集)和 character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding 使用不当。

  解决办法

  统一数据库、Web 应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为 UTF-8。或

  对数据进行正确的转义,如 mysql_real_escape_string+mysql_set_charset 的使用。sql 里面只有 update 怎么利用

  先理解这句

  SQL

  UPDATE

  user SET password='MD5($password)', homepage='$homepage' WHERE id='$id'

  如果此SQL被修改成以下形式,就实现了注入:

  a、修改 homepage 值为 http://xxx.net', userlevel='3之后 SQL 语句变为

  UPDATE user SET password='mypass', homepage='http://xxx.net', userlevel='3' WHERE id='$id'userlevel 为用户级别

  b、修改 password 值为 mypass)' WHEREusername='admin'#之后 SQL 语句变为UPDATE user SET password='MD5(mypass)'WHERE username='admin'#)', homepage='$homepage' WHERE id='$id'

  c、修改 id 值为' OR username='admin'之后 SQL 语句变为UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'

  sql 如何写 shell/单引号被过滤怎么办?

  写 shell: root 权限,GPC 关闭,知道文件路径 outfile 函数

  http://127.0.0.1:81/sqli.php?id=1 into outfile 'C:\\wamp64\\www\\phpinfo.php' FIELDS

  TERMINATED BY ''`

  `http://127.0.0.1:81/sqli.php?id=-1 union select

  1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile 'C:\\wamp64\\www\\phpinfo.php'`

  宽字节注入

  代替空格的方法

  %0a、%0b、%a0 等/**/ 等注释符<>

  mysql 的网站注入,5.0 以上和 5.0 以下有什么区别?5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表名。

  5.0 以下是多用户单操作,5.0 以上是多用户多操做。

  更多关于网络安全培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

相关文章

华为外包网络安全面试题-网络安全常见攻击类型与防御措施

2023-07-25

网络安全程序员面试题

2023-07-21

抓包是什么意思

2023-03-02

什么是xss跨站脚本攻击

2023-03-02

webshell攻击是什么

2023-03-02

sqlserver注入拿webshell-csdn有哪些必要条件?

2023-03-02
在线咨询 免费试学 教程领取