网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
某58同城-安全工程师扩展
场景题,sql注入如下 ~select * from user where userid = {};~ response中没有返回信息,如何进行sql注入 ,1s就超时,如何进行sql注入 编写一个安全的SDK,sql注入的修复怎么写,预编译 白名单 xss的修复- 实体化转义 业务中需要使用到html的场景,无法通过实体化转义进行防御漏洞,如何处理 白名单限制+黑名单过滤 html标签白名单+事件白名单 RCE的修复(java,python) - 白名单限制+黑名单过滤 XXE的修复 window域内横向-票据伪造,白银票据和黄金票据一、无回显SQL注入攻击与防御
1. 时间盲注攻击技术
攻击原理:
当注入结果无回显但存在响应时间差异时,攻击者通过构造条件语句触发数据库延时操作(如SLEEP(2)
),根据响应是否超时判断条件真伪。例如:sql
' UNION SELECT IF(SUBSTRING(database(),1,1)='a', SLEEP(2), 0)--
若数据库名首字母为
a
,则响应延迟2秒,否则立即返回。Payload优化技术:
- 二分法加速枚举:将字符比较范围从全字符遍历(26字母)压缩为对数级次数(如
SUBSTRING(database(),1,1) BETWEEN 'a' AND 'm'
)。- 条件堆叠注入:通过分号叠加多个延时判断(如
'; IF (condition) WAITFOR DELAY '0:0:2';--
),单次请求探测多数据点。防御方案(SDK层):
- 参数化查询强制化:在SDK中封装预编译接口,确保所有SQL语句均通过
PreparedStatement
(Java)或cursor.execute(sql, params)
(Python)执行。- 输入白名单校验:
- 数值型参数:正则验证
userid
为纯数字(^\d+$
)。- 字符串参数:拒绝包含空格、引号等特殊字符(如
^[a-zA-Z0-9_]+$
)。- 执行耗时监控:在数据库驱动层拦截异常长查询(如超过500ms),触发告警并终止会话。
二、富文本XSS防御体系设计
1. 混合过滤策略
- 白名单标签与属性:
- 基础标签:允许
,
, 等,禁用