【SQL篇】大厂网络安全面试题集合(一)
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 以上是多用户多操做。
更多关于网络安全培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。