前言
作者简介:不知名白帽,网络安全学习者。
博客主页:https://blog.csdn.net/m0_63127854?type=blog
安全面试专栏:https://blog.csdn.net/m0_63127854/category_11869916.html
目录
12.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用
11.如何突破注入时字符被转义
宽字符注入、hex编码绕过
12.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用
1)先爆破用户名,再利用被爆破出来的用户名爆破密码
2)其实有些站点,在登陆处也会这样提示
3)所有和数据库有交互的地方都有可能有注入
13.CSRF、SSRF和重放攻击有什么区别
CSRF是跨站请求伪造攻击,由客户端发起;
SSRF是服务器端请求伪造,由服务器发起;
重放攻击是将截获的数据包进行重放,达到身份认证等目的。
14.SQL注入防护方法
1)使用安全的API
2)对输入的特殊字符进行Escape转义处理
3)使用白名单来规范化输入验证方法
4)对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
5)服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除
15.代码执行,文件读取,命令执行的函数都有哪些
1)代码执行:
eval, preg_replace+/e, assert, call_user_func, call_user_func_array, create_function
2)文件读取:
file_get_contents( ), highlight_file( ), fopen( ), readfile( ), fread( ), fgetss( ),
fgets( ), parse_ini_file( ), show_source( ), file( )3)命令执行:
system( ), exec( ), shell_exec( ), passthru( ), pcntl_exec( ), popen( ), proc_open( )
16.为什么参数化查询可以防止SQL注入
原理:使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行。
简单的说:参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑。
17.盲注是什么,怎么盲注
盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。
盲注的手段有两种:
一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入;一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),可以用benchmark, sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。
18.宽字节注入产生原理以及根本原因
1)产生原理:
在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,由于0XBF27是两个字符,在PHP中 addslash 和 magic_quotes_gpc 开启时,会对0×27单引号进行转义,因此0×bf27会变成0×bf5c27。
而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着“吃掉”,单引号由此逃逸出来可以用来闭合语句。2)根本原因:
character_set_client(客户端的字符集)和 character_set_connection(连接层的字符集)不同,或转换函数如, iconv 、 mb_convert_encoding 使用不当。
3)解决办法:
统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如mysql_real_escape_string+ mysql_set_charset 的使用。
19.mysql的网站注入5.0以上和5.0以下有什么区别
5.0以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表名;
5.0以下是多用户单操作,5.0以上是多用户多操作。
20.SSRF漏洞的验证方法
因为SSRF漏洞是让服务器发送请求的安全漏洞,所以就可以通过抓包分析发送的请求是否是由服务器所发送的,从而来判断是否存在SSRF漏洞;
在页面源码中查找访问的资源地址,如果该资源地址类型为
www.baidu.com/xxx.php?image=( 地址)的就可能存在SSRF漏洞。