联合查询注入——数字型
联合查询注入——数字型注入
1.查看界面


可以看见在界面中有下拉框,包含了1到6的数字,我们只能够选择数字,点击对应的数字回馈对应的用户信息,无法进行输入,所以我们需要将注意力放到报文当中
2.分析报文
点击数字1进行查询,得到如下报文:

在报文中显示中可以看见传送了id=1的内容,可以判断出该处为注入点。
3.进行注入
分析查询结果:

查询的结果可以看见,返回的是一个人名和一个邮箱,所以猜测查询语句查询了两个字段,在注入点中使用order语句测试字段数
先测试注入两个字段:
1 | |


可以看见,反馈是正常的,接下来尝试注入三个字段:
1 | |

通过2列和3列的注入反馈不同,说明没有第三列,查询语句指用了两个列名,假设治理使用的SQL语句为:
1 | |
4.尝试or的注入
尝试让它将用户表所有人的信息查询出来,在后面加上永真的判断注入:
1 | |


可以看见反馈出了所有人的名单信息,说明注册成功。
5.获取数据库名
使用 union 查询当前的数据名和当前的用户
1 | |


可以看见在反馈中给出了数据名和当前的用户信息。
6.获取表名
利用查出来的数据库名称 pikachu 构建payload查询表名:
1 | |


7.获取表
查询pikachu这个数据库发现里面有个users表,查看相关内容
1 | |


8.获取表的内容
通过第七步,就知道了所属的所有表名,接下由于联合查询要求前后两个SQL语句的列名数要一致,所以这里只能用两个列名进行查询。
1 | |


9.进行解码
通过上述的SQL注入,我们得到了三组用户名和密码
整理用户名和密码
用户名 admin
- 密码 e10adc3949ba59abbe56e057f20f883e
用户名 pikachu
- 密码 670b14728ad9902aecba32e22fa4f6bd
用户名 test
- 密码 e99a18c428cb38d5f260853678922e03
使用kali的工具hash-identitier判断用户的密码的哈希类型最终确定为MD5,进行解码:



好家伙,不只是可以注入还是弱口令,框框给他几个大嘴巴子
联合查询注入——数字型
https://one-null-pointer.github.io/2022/08/08/SQL注入——数字型/