- 博客(16)
- 收藏
- 关注
原创 CTFHub技能树web之XSS
在XSS系列的题目中,由于需要使用能够接受XSS数据的平台,并且由于使用的是CTFHub的模拟机器人点击我们的虚假URL,因此使用的XSS平台不能是自己本地搭建的,如果是本地的模拟点击的机器人将无法访问我们给的这个URL地址,也就无法接收到我们想要的数据了,因此想解决本系列的题目,可以通过在线XSS平台或者自己使用服务器搭建一个XSS平台。可以看到可控的位置在53-55行中的这个位置,先闭合前面的单引号和<script>,然后再用一个<script>输入XSS代码,构造语句如下';第三题: DOM反射。
2024-02-26 15:26:49
2701
4
原创 CTFHub技能树web之RCE(二)
打开phpinfo,可以看到allow_url_fopen和allow_url_include都是On,因此可以使用php://input,由于代码会检查file中的内容,因此不能够使用php://filter包含文件,使用php://input通过hackbar使用POST方式发包,抓包并在最后一行加php代码执行。使用%0a拼接cd%09*_is_here进入flag文件所在的目录中,由于cat被过滤因此使用tac,再使用%0a拼接tac%09*输出flag文件内容,构造语句为?
2024-02-20 18:35:08
1262
1
原创 CTFHub技能树web之RCE(一)
根据代码可以看到该网页使用request得到cmd参数并使用eval执行cmd的代码,其中isset函数用于检测是否传入了一个名为cmd的变量的值(是否非空),eval是将一串字符作为php代码执行,$_REQUEST默认包含了。使用hackbar传递POST请求,file为php://input使得POST参数可以作为原始请求的数据,使用bp抓包,即可看到执行POST参数中代码后的内容。substr函数是返回字符串的子串,意思是如果file的前六个字符为php://,那么就会包含file文件。
2024-02-18 15:32:59
832
1
原创 CTFHub技能树web之文件上传(二)
MIME类型校验就是我们在上传文件到服务端的时候,服务端会对客户端也就是我们上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。直接将文件名改为phpphp后仍然回显空的后缀,应当是将php替换为空,直接双写会返回两个空,因此将后缀改为pphphp,只能识别到第二个字符开始的php并改为空,剩下的拼接仍然是一个php后缀。成功上传,观察回显,发现上传的文件中的php后缀消失,结合题目应该是需要将php双写完成绕过。上传成功,使用蚁剑连接,成功连接。
2024-02-15 18:17:56
653
1
原创 CTFHub技能树web之文件上传(一)
使用蚁剑连接,上传的.htaccess文件文件名字只能是.htaccess,只能有后缀而不能有文件的名,比如1.htaccess等,在第一次上传中我使用了1.htaccess,在后续上传jpg格式文件后服务器没有自动将jpg解析为php文件,需要注意。JavaScript会对我们上传的文件进行限制,允许图片格式上传,可以通过上传图片马或者使用bp修改一下文件后缀即可,本题使用bp修改文件后缀的方法,先将文件后缀修改为.jpg格式,文件上传然后抓包。文件上传目录权限:确保上传目录的适当权限设置非常重要。
2024-02-15 17:20:41
1425
1
原创 C++算法之动态规划(ACWING题目)
当第i个元素相等的时候f[i][j] = min(f[i][j], f[i - 1][j - 1]);如从i到j,用k划分,f[i, k] + f[k + 1, j] + s[j] - s[i - 1] //s是前缀和。
2024-02-14 12:35:29
1267
1
原创 portswigger靶场之sql注入(七)
当长度大于20时不回显 Welcome back,说明密码长度为20位,修改语句为select+substring(password,1,1)+from+users+where+username='administrator',其中substring函数能够提取字符串中的单个字符并进行比对测试,将该数据报发到bp的爆破模块中,由于sql语句匹配中大小写不敏感,因此字典爆破就只需要a-z和0-9就行了。修改为'+and+'1'='1,出现关键字,因此该注入点为字符型。靶场十一,有条件响应的SQL盲注。
2024-02-14 11:00:11
571
1
原创 portswigger靶场之sql注入(六)
如何通过一列回显两列的数据,最简单的方法是分别查询,先查username的数据再查password的数据,也可以通过sql语法在一列中查询两列的数据,使用concat函数将两个字符串连接在一起,为了便于区分可以在中间再添加一个冒号':'进行分隔。根据题目描述,要查找的数据是名为username和password的列中的数据,表名为users,因此构造语句为select username,password from users。启动靶场,抓包,使用union联合查询判断列数,当列数为2时回显未报错。
2024-02-05 21:00:06
515
1
原创 portswigger靶场之sql注入(五)
(题目解出但是仍然显示题目未解决,使用hackbar成功回显但也显示题目未解决,似乎靶场有点问题)打开靶场抓包,通过改变select null语句中的null的数量根据回显报错情况判断有几列。打开靶场,抓包,通过union联合查询判断有几列,在null数量为3时正常回显。将三个null依次修改为字符串,判断这三列哪一列为字符类型。靶场八,通过union联合查询,查找文本类型的列。正常回显,因此文本类型的列为第二列,题目解出。正常回显,可以确定列数为3,题目已解决。当null数量为1时,报错,改为2。
2024-02-05 20:34:25
433
1
原创 portswigger靶场之sql注入(四)
靶场六,找出Oracle数据库中的用户名和密码进行登录,本题与上一道题目类似,都是通过查询表名,列名进行数据查找,区别是sql语法不同,上一道题目是非Oracle数据库的时候进行查询的方法,本题是Oracle数据库进行查询的方法。首先也是抓包,并通过union select方法判断为几列,由于Oracle数据库语法的特殊性,因此在通过select语句判断为几列的时候需要from数据库中默认内置的表dual避免报错,通过查询可确定列数为2。直接查询这两列的数据,查到账号和密码。找到账号和密码的列名。
2024-02-03 16:37:12
516
1
原创 portswigger靶场之sql注入(三)
回显正常,则列数为2,可以通过select banner from v$version这条语句查询Oracle数据库的版本信息,构造payload如下,成功查询到Oracle数据库的版本信息。Oracle数据库执行select语句时,必须指定一个表名,且Oracle数据库内置一个表dual,则可以通过该表名完成select语句的查询。打开靶场,抓包,使用union select修改列数确定为几列,当列数为1时回显报错。查询这两列的数据,成功查询到用户名为administrator的用户的用户名和密码。
2024-01-30 12:58:14
560
1
原创 第十四届蓝桥杯省赛C++B组题目及解析(二)
如果一个岛被另一个环形的岛屿完全包围了那么就成为了一个子岛,而是否完全包围可以通过是否可以和拓展后的最外面一圈的海水相接,如第二个样例中的内部的两个陆地能够通过最左边一列的中间的那个‘0’和外界的海洋进行相接,因此不是子岛是独立的岛屿。运行后喜提一个Output Limit Exceeded,本来以为是写的过程有问题,看了一下通过情况应该是加强后的数据太强了会卡这种用优先队列的写法,如果是正常的比赛当中的数据应该是不会这样出现故意卡优先队列写法的情况。采用一维数组模拟双链表进行前驱和后继的修改操作。
2024-01-25 22:43:56
1178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人