问:拿到一个待检测的站,你觉得应该先做什么?
答:收集信息 whois、网站源 IP、旁站、C 段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说...
问:如何突破注入时字符被转义?
答:宽字符注入
hex 编码绕过
问:代码审计常见易出问题函数
答:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function
文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
问:token 和 referer 做横向对比,谁安全等级高?
答:token 安全等级更高,因为并不是任何服务器都可以取得 referer,如果从 HTTPS 跳到 HTTP,也不会发送 referer。并且 FLASH 一些版本中可以自定义 referer。
但是 token 的话,要保证其足够随机且不可泄露。(不可预测性原则)
问:对 referer 的验证,从什么角度去做?如果做,怎么杜绝问题
答:对 header 中的 referer 的验证,一个是空 referer,一个是 referer 过滤或者检测不完善。
为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。
问:涉及到 Jsonp 的安全攻防内容有哪些?
答:JSON 劫持、Callback 可定义、JSONP 内容可定义、Content-type 不为 json。
问:mysql 的网站注入,5.0 以上和 5.0 以下有什么区别?
答:5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表名。
5.0 以下是多用户单操作,5.0 以上是多用户多操做。
问:宽字节注入产生原理以及根本原因
答:产生原理
在数据库使用了宽字符集而 WEB 中没考虑这个问题的情况下,在 WEB 层,由于 0XBF27 是两个字符,在 PHP 中比如 addslash 和 magic_quotes_gpc 开启时,由于会对 0x27 单引号进行转义,因此 0xbf27 会变成 0xbf5c27,而数据进入数据库中时,由于 0XBF5C 是一个另外的字符,因此\转义符号会被前面的 bf 带着呗"吃掉",单引号由此逃逸出来可以用来闭合语句。
根本原因
character_set_client(客户端的字符集)和 character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding 使用不当。