原理
将sql命令注入到后台数据库并且执行(通过web表单中输入恶意的sql语句得到存在安全漏洞网站上的数据库
攻击方法
- 报错注入 在输入框中插入恶意sql语句从而触发数据库错误,从错误提示信息中获取数据库表结构和字段信息
(补充:单引号的字符串拼接)(万能密码) 在输入框中插入带有单引号的字符串,使得原始SQL语句结构发生变化,从而实现攻击 eg:在用户名输入框中输入: admin'or '1'='1 这样在后台执行的SQL语句可能变为: SELECT * FROM users WHERE username='admin' or '1'='1' 这样就可以绕过用户名和密码验证
UNION联合注入 原理:在输入框插入UNION操作符,使得原始sql语句与恶意sql语句合并,获取其他表格信息 eg:在输入框输入 1' UNION SELECT username, password FROM users WHERE '1'='1 后台sql语句可能变成 SELECT * FROM products WHERE id='1' UNION SELECT username, password FROM users WHERE '1'='1'
盲注 布尔,时间
SQL注入的绕过过滤机制
- 大小写绕过 eg:OrdER by(过滤order)
- 双写绕过(出现关键字后替换为空) UniunionOn(过滤union)
- 内联注释绕过 /* !xxx * / ......
做题wp
sqli-labs
11.14.15.38关 小结: #基于POST 直接在输入框进行注入 11关:输入框输入内容后有报错显示==>报错&联合 14关:输入框输入内容后无报错和对错显示==>时间盲注 15关:无报错显示==>布尔盲注
18.19.20关
总结: 18关: #ua头注入 check_input():就是一个防注入的函数,抓包发现无法在输入框上进行注入==>抓包发现ua有问题==>从ua下手==>后面一样的套路 updatexml(xxx,xxx,xxx): 第一个参数:XML_document是String格式,为XML文档对象的名称 第二个参数:XPath_string (Xpath格式的字符串) 第三个参数:new_value,String格式,替换查找到的符合条件的数据 eg:updatexml(1,concat('
',(select group_concat(table_name) from information_schema.tables where table_schema=database()),''),1) 就可以把concat()得到的字符串不符合XPath_string格式的东西给报错显示出来 19关: #referer头注入 同理,从referer下手 20关: #cookie注入 同理,从cookie下手38关: #堆叠注入 #基于GET #联合注入
其他平台题
nss 这个题有两个小结: 1.发现了过滤,空格 用/ * * /,=用like#用%23 2.mid函数:mid(字段名,开始位,总长度),注意总长度上限20噢
Comments | NOTHING