暑假期间学习SQL注入漏洞的报告

发布于 2023-12-05  35 次阅读


原理

将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

  • 1-4关 小结: #基于GET #报错 #联合注入 (条件:页面有报错显示) pPPbIaT.png

  • 5-8关 小结: #基于GET #布尔盲注 (条件:无回显,只有对错显示) pPPqkQA.png

  • 9-10关 小结: #基于GET #时间盲注 (条件:无回显,无对错显示) pPPquFS.png

  • 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 #联合注入

    其他平台题

  • buu pPPO2xH.pngpPPOIdP.png 有报错显示==>好耶!==>万能密码构造恒成立sql语句就可以进了:1’ or ‘1’=‘1

  • 攻防世界 pPPXx6H.png 第一眼啥东西都没有,只能get传参呗==>后面又是一样的套路判断爆库名表名字段名找flag

  • nss pPPjhUP.png 这个题有两个小结: 1.发现了过滤,空格 用/ * * /,=用like#用%23 2.mid函数:mid(字段名,开始位,总长度),注意总长度上限20噢

    pPPxOhV.png 这个题看着也亲切,get传参后有报错==>报错注入联合注入老套路ko

做了这一些题,感觉后面的爆库名表名字段名都是次要的,最重要的部分我觉得如下 pPPzv5t.png


大一在读菜鸡ctfer的成长记录