<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a_silly_coder的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a_silly_coder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a_silly_coder]]></copyright><item><title><![CDATA[【BUUCTF-pwn-test_your_nc】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/124846785</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/124846785</guid><author>a_silly_coder</author><pubDate>Wed, 18 May 2022 17:18:20 +0800</pubDate><description><![CDATA[下载文件后发现是64位程序，拖入ida查看逻辑。



直接结束。






]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-string】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/124836958</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/124836958</guid><author>a_silly_coder</author><pubDate>Wed, 18 May 2022 10:56:24 +0800</pubDate><description><![CDATA[首先检查保护



将文件拖入64位ida





查看代码逻辑，发现这个代码有些复杂，但是大多数都是无效信息，很多输入都是指引程序进行的，扰乱我们的视线。

关键信息有：v3v4的数值地址都给出来了，然后查看sub_400D72函数



这里首先输入一个name，这是干扰输入，只要不超过0xC的长度即可。然后sub_400A7D也是干扰输入，只需要跟着代码输入就可以了。接着查看sub_400BB9与sub_400CA6



sub_400BB9这里很显然是有一个格式化字符串漏洞。

接着看s...]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-CGfsb】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/124836252</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/124836252</guid><author>a_silly_coder</author><pubDate>Wed, 18 May 2022 10:08:49 +0800</pubDate><description><![CDATA[首先检查文件保护



将文件拖入32位ida



阅读代码后，发现这是一个简单的格式化字符串漏洞，通过修改pwnme的数值为8，直接执行cat flag。pwnme在0x0804A068的位置。



随后用gdb确认偏移，有两种方法，一种是直接数栈上的位置，另一种是输入AAAA.%x.%x.%x查看。我采用第一种。





栈上是第11个位置，但是由于第一个位置参数是格式化字符串，所以输入的AAAA其实是格式化字符串的第10个参数。

开始编写攻击脚本。


from pwn import ...]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-int_overflow】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/124775842</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/124775842</guid><author>a_silly_coder</author><pubDate>Sat, 14 May 2022 23:17:48 +0800</pubDate><description><![CDATA[下载文件后首先检查保护，发现不存在canary，可以进行栈溢出。



将文件拖入ida32位进行查看，发现是一个简单的登录。

首先在login()中输入账号和密码，发现passwd存在buf中，可输入长度有0x199，然后传入check_passwd()函数中。



然后在check_passwd中将0x199长度的buf复制给dest，但是dest距离ebp只有0x14，我们也在文件中发现了cat flag的函数，所以思路就很清晰了，在输入密码时，输入一个长字符串，在check_passwd函数..]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-level3】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122990282</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122990282</guid><author>a_silly_coder</author><pubDate>Thu, 17 Feb 2022 22:52:55 +0800</pubDate><description><![CDATA[下载文件后首先查看保护，发现可以进行栈溢出攻击



将文件拖入32位ida



进入vulnerable_function后，发现了read处有栈溢出漏洞



在查看代码后，发现没有提供system和bin/sh，但是由于给了libc，所以可以找到libc的偏移量，然后计算出system和bin/sh的加载地址。

对于plt表，got表，实际加载地址，我是这么理解的：通过elf.plt['write']获取到的是write在plt表中的地址1，这个地址1上存放的实际内容是write在got表的地..]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-hello_pwn】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122523345</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122523345</guid><author>a_silly_coder</author><pubDate>Sun, 16 Jan 2022 15:03:39 +0800</pubDate><description><![CDATA[下载文件后，首先检查保护：



将文件拖入64位ida，查看代码





基本逻辑是：读取一个输入，存入unk_601068，接着比较dword_60106C是否等于一个预期的值，如果相等，执行对应函数，函数内直接执行cat flag.txt



所以思路就是需要覆盖dword_60106C，让其等于预期值，此时我们需要在输入unk_601068时，对dword_60106C进行覆盖，接着我们查看这两个值的存放位置。



发现这两个值之间相隔4个字节，所以需要4个字节的填充数据，接着输入预期值。..]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-get_shell】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122521006</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122521006</guid><author>a_silly_coder</author><pubDate>Sun, 16 Jan 2022 11:33:56 +0800</pubDate><description><![CDATA[下载文件后，首先检查保护：



将文件拖入64位ida



阅读main函数后，发现执行后就直接获取了控制权，根本不需要任何攻击。

所以脚本如下，只需要连接即可。



执行脚本：














]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-cgpwn2】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122515217</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122515217</guid><author>a_silly_coder</author><pubDate>Sat, 15 Jan 2022 20:22:49 +0800</pubDate><description><![CDATA[下载文件后，首先检查保护：



随后将文件拖入ida，查看源码，在hello函数中，发现了如下代码



首先用安全的fgets输入了一个变量，接着用不安全的gets接收了一个变量，在此处可以确认是栈溢出，且溢出点就在此处。

开始寻找利用方式，发现了system函数



还缺一个"/bin/sh"字符串，找遍了代码，没有发现，但是由于此前可以有一个自己的输入，保存在name变量上，即可以自己手动输入"/bin/sh"，自此，设计栈结构为：



开始编写脚本：




from pwn imp...]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-guess_num】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122507574</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122507574</guid><author>a_silly_coder</author><pubDate>Sat, 15 Jan 2022 11:26:30 +0800</pubDate><description><![CDATA[下载文件后，首先检查保护



开启了金丝雀，不能溢出到返回地址

将文件拖入ida阅读



代码逻辑是：首先输入name（赋值给v7），接着使用seed[0]作为种子生成10个随机数，每一轮都要猜对，10轮后进入sub_C3E()函数，我们进入这个函数后，发现是直接执行cat flag。

回头看main函数，发现v7和seed[0]都在栈上，且给v7赋值时使用的gets()方法



所以确定攻击思路：在输入name时，输入足够长的数据，覆盖seed[0]，然后自己模拟C语言的rand()方法生...]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-level2】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122502700</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122502700</guid><author>a_silly_coder</author><pubDate>Fri, 14 Jan 2022 21:47:17 +0800</pubDate><description><![CDATA[下载文件后，首先查看保护



将文件拖入ida 32位，发现函数名明示了攻击点



点进vulnerable_function函数后，发现buf距离ebp有0x88的距离，但是可以读入0x100的大小，确定这是一道栈溢出的题目，溢出点就在此处。



确定溢出点后，开始寻找利用方式，发现代码中给出了system函数，在0x8048320的位置



随后寻找sh或者bin_sh字符串：



此时要素齐全，开始编写脚本。

设计栈的结构为：



脚本为：



发送脚本，开始攻击：


...]]></description><category></category></item><item><title><![CDATA[【攻防世界pwn-level0】]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/122498780</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/122498780</guid><author>a_silly_coder</author><pubDate>Fri, 14 Jan 2022 17:39:21 +0800</pubDate><description><![CDATA[下载文件后

首先查看文件的保护



将文件拖入ida，反汇编后，发现有个函数名已经明示了



进入vulnerable_function后，发现buf到rbp的距离为0x80，而read中给buf赋值的空间有0x200，确定这是一道栈溢出的题目，溢出点就在此处。



随后发现文件提供了callsystem。开始着手编写脚本。



payload解释：buf距离rbp有0x80的长度，再加上需要覆盖rbp的8位（64位下覆盖rbp需要8字节）所以填写的垃圾数据有0x80 + 0x8。rbp后是返回.]]></description><category></category></item><item><title><![CDATA[关于20.1版本IDEA没有static web创建选项]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/105811017</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/105811017</guid><author>a_silly_coder</author><pubDate>Tue, 28 Apr 2020 12:42:09 +0800</pubDate><description><![CDATA[最近学习前端开发，使用了IDEA20.1的社区版发现没有Spring与Static Web创建选项，随后改用付费版（30天免费），发现有了Spring但是仍没有Static Web。

最后发现是软件版本问题，20.1版本是没有static web选项的，可以改用19.3版本。


...]]></description><category></category></item><item><title><![CDATA[整理一下CCF推荐期刊会议（A类）]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/104291450</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/104291450</guid><author>a_silly_coder</author><pubDate>Thu, 13 Feb 2020 13:01:27 +0800</pubDate><description><![CDATA[整理了CCF2019年推荐的全部A类期刊会议，共85个。



等级
			全称
			简称
			类型
			方向
		A类
			ACM Transactions on Computer Systems
			TOCS
			期刊
			计算机体系结构/并行与分布计算/存储系统
		A类
			ACM Transactions on Storage
			TOS
			期刊
			计算机体系...]]></description><category></category></item><item><title><![CDATA[使用jdbc连接数据库时错误：时区报错]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/89279011</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/89279011</guid><author>a_silly_coder</author><pubDate>Sat, 13 Apr 2019 10:48:10 +0800</pubDate><description><![CDATA[具体报错如下：

The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration prop...]]></description><category></category></item><item><title><![CDATA[修改环境变量后，新的jdk不生效，解决方法]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/89066161</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/89066161</guid><author>a_silly_coder</author><pubDate>Sun, 07 Apr 2019 10:35:04 +0800</pubDate><description><![CDATA[由于课程设计，必须使用jdk1.7，但是有时候有需要使用jdk1.8，所以我自己设计了一个方法：



在需要的时候，就只将JAVA_HOME中的7改成8，但是在刚开始切换的时候，发现将7改成8之后，在dos框中输出Java -version，显示还是jdk1.7，百度之后发现是因为在C盘中Windows中的system32中，生成了java.exe,javaws.exe,javaw.exe，只需...]]></description><category></category></item><item><title><![CDATA[安卓XML文件中的color的写法 0x与#]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/86644267</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/86644267</guid><author>a_silly_coder</author><pubDate>Fri, 25 Jan 2019 12:51:06 +0800</pubDate><description><![CDATA[

在学习安卓数组资源的时候，接触到了在数组中表示颜色，在一般layout文件中表示颜色时，可以使用颜色编辑器来找出颜色，找出来的颜色是以#开头的，最开始我也是在&amp;lt;item&amp;gt;中使用了以#开头来表示颜色，但是在运行时，R文件会标红，代码也无法运行。

原因是，以#开头的无法在资源文件中正常转化为int型，或者说不能使用#开头来表示int，于是改成0x开头，但是这样无法使用颜色编辑器，具体...]]></description><category></category></item><item><title><![CDATA[学习笔记——赫夫曼树的度]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/80801501</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/80801501</guid><author>a_silly_coder</author><pubDate>Mon, 25 Jun 2018 15:17:20 +0800</pubDate><description><![CDATA[今天做题遇见一个：        若度为m的赫夫曼树中，叶子节点个数为n，则非叶子节点的个数为（C）     A：n-1                       B：⌊n/m⌋-1    C：⌈(n-1)/(m-1)⌉    D：⌈n/(m-1)⌉-1    最开始看见这题有个疑惑，根据书上的解释，赫夫曼树就是二叉树，其结点的度只有0和2两种，何来度为m一说，在查阅资料过后才知道赫夫曼除了二叉...]]></description><category></category></item><item><title><![CDATA[中缀表达式转换成后缀表达式与后缀表达式的计算过程]]></title><link>https://blog.youkuaiyun.com/a_silly_coder/article/details/80653015</link><guid>https://blog.youkuaiyun.com/a_silly_coder/article/details/80653015</guid><author>a_silly_coder</author><pubDate>Mon, 11 Jun 2018 15:59:00 +0800</pubDate><description><![CDATA[1.中缀表达式转换成后缀表达式：        首先需要注意的是：中缀转后缀的结果并不唯一。例如：（a+b+c*d）/e是一个中缀表达式，ab+cd*+e/与abcd*++e/都是其后缀表达式。        转换方式：先根据中缀表达式的各操作符的优先级，以上面这个式子为例，将（a+b+c*d）这个括号里面的数看作是一个常数q，则整个式子成了q/e的形式，转换成后缀表达式为：qe/。然后再看q转换...]]></description><category></category></item></channel></rss>