写在前面
学二进制、pwn,pwnable.kr是一个必须要刷的网站,所以开一篇文章专门记录自己的刷题历程
其实网上很多都有,但我这里主要记录各题的思路,不写详细的解法,也主要用于自己的归纳总结,do it yourself,才能学到更多
对我所说的思路有不了解或有不同的看法的,欢迎email我 lin.giglf@gmail.com 一起讨论
不定期更新
学二进制、pwn,pwnable.kr是一个必须要刷的网站,所以开一篇文章专门记录自己的刷题历程
其实网上很多都有,但我这里主要记录各题的思路,不写详细的解法,也主要用于自己的归纳总结,do it yourself,才能学到更多
对我所说的思路有不了解或有不同的看法的,欢迎email我 lin.giglf@gmail.com 一起讨论
不定期更新
终于颓颓颓颓了很长一段时间,开始修我的blog
这里说一下我blog的更新的地方吧
博客依然由hexo+freemind主题建成
图床修复:采用hexo-asset-image
插件,图片直接同步到repo中,在pages上直接引用
留言系统修复:多说关闭了,只能换一个,disqus以前用过,但是登陆方式有限制,对国内用户不太友好,后来找到一个叫livere(来必力)的,看着还挺好用,就换成这个了。
从前博客挂在github pages上,用的http://gifish.tk 的域名。但由于github禁了百度的爬虫,导致百度会搜不到,现在同步挂到了github pages和coding.net pages上,让百度可以搜到博客的内容,不过试了下,似乎刚配置好百度的爬虫还没更新。然后更新域名为http://blog.2bsticker.cn ,国外线路解析到github,国内线路解析到coding.net,试了试github page不能设置多个CNAME记录,于是吧gifish.tk url重定向到了github page上。
综上,目前你可以通过以下链接访问我的博客
以后想注册个个人长期使用的域名,日后再更新。
添加hexo-wordcount
插件,修改侧边栏的样式,每篇文章可显示字数和预计阅读时间。
添加小蒜子阅读数量统计,显示于侧边栏。
添加rss订阅链接。
freemind的样式更改为readable-inverse
更新About Me面页
更新了freemind的字体包,添加了google analyse和baidu统计,这个主要用于自己查看数据用的。
依然存在问题
资料参考
仔细看一下,上一篇特么是4月份的事了,现在9月份,已近5个月没有更新过了
在这五个月中,本来有想过写东西的,但由于一直很烦(对,其实也不算太忙)
烦于找实习,实习失利又去考虑找读研导师,一直折腾来折腾去,各种破事。
如果说大三上是因为各种课程各种实验堆积搞得自己很忙很烦,那么大三下就是各种破事堆积搞得自己很烦
每天都很烦!
还好,这段可怕的日子已经过去了,我也丝毫不留恋,如今仅仅会感叹一下时间过得真快,现在学校又都是军训的萌新,不止一次感叹年轻真好
在这五个月,有几次我都想更些blog,不过一直没写,没组织,现在考虑下是不是应该补上。
其中包括:
还有些想写的,但似乎忘了,果然应该及时写的= =
然后,最近想要从零开始写一个小型的操作系统内核,正在肝文档,抄代码,会及时记下这个过程的
再就是,关于这个博客的修整
首先的问题是:
所以计划是:
就酱
但愿人生能往自己喜欢的方向发展,丰富多彩。
接上一篇,接下来介绍7.0后新增的v2签名认证方式
与v1方式签名不同的是,v2的签名是对整个文件的一种签名方式
直接从字节码上对apk进行签名,不必遍历每个入口进行计算签名
并且每一个改动都会使得签名失败,因此其提高了签名认证的速度和签名保护的安全性
但是有一点得注意的是,v2签名仅用在7.0以上的系统中,因为只有7.0以上的系统有有关v2签名认证的代码
因此为了适配早前的系统,正常还是采用v1签名,或是v1v2签名并存
在后面的代码可以看出来,7.0以上的系统会先进行v2签名的认证,若没检测到v2签名信息,则再进行v1的方法
但是由于一些应用需要打包渠道包,每次修改再编译再签名实在太耗时,大部分会选择关闭v2签名
在build Gradle中添加
v2SigningEnabled false
因为在v1签名中,META-INF
中的内容是不会检测的,这使得在打包渠道包时不需要重复重新签名
渠道包指的是在各大应用市场,发布的apk包的清单文件中,某个meta-data标签下,配置的value不一样,这个标签的作用就是用来区分是哪个市场的
因为某些不知名的原因,让我感觉很有必要学习一下apk签名的方式,于是。。。便有了这篇
(真的好久没写了哇,近期烦心事真的太多了)
我在网上搜了各种大大小小关于apk签名的文章,但始终没有能让我满意的,而且也感觉一直缺乏一篇能从字节上分析对比新旧两种签名方式的文章,so……
传统的安卓签名方式是通过jar的签名方式实现的,在apk包下,会有一个META-INF
的文件夹,META-INF的文件夹下,会有MANIFEST.MF
CERT.SF
CERT.RSA
三个文件,均是用于apk签名认证的。
而在Android7.0后,新增了一个APK Signature Scheme v2的签名方式,更为强效。而原来的签名方式则是 JAR-signed APK verification (v1 scheme)
详细可看官方的文档
https://source.android.com/security/apksigning/v2#v1-verification
WriteUp比赛完就写了= =结果我拖到现在才整理发上来
mini-lctf是校内入门赛啊……
真正的dalao们都出题去了,没有参加,于是给我单挑打了个第五出来
然而因为没有新生在队内所以不给我奖品咯[掀桌!]
好歹我还ak了re和mobile!(虽然都是入门级的)
好咯,不管你,post一下题目的打包
链接: https://pan.baidu.com/s/1pKXa2rp 密码: gnbq
比赛地址是 pwnhub.cn
也可以下载我上传的writeup来看
弱渣用的解法超奇怪233333333
然而居然还被选上了官方推荐
接下来看看正文吧
得到pwnhub.jar包,先跑起看看
java -jar pwnhub.jar
整件事起因是一个程序(这条死咸鱼还欠着两篇文章没有写)
室友问道为啥一个
1 | String str = "中"; |
结果是3,而不是我们当时常见的一个中文对应2字节
本质上的原因是因为他编辑器用了utf-8编码
后来又看到这么一段话
“计算机内存中,统一使用Unicode编码,需要保存或者传输时,转换成UTF8编码。”
然后我就懵逼了
对于编码方面的知识我的理解是混乱的,因此写篇blog理清一下思路
好久没写过了,在总算考完试并且获得一堆烂成绩后,是时候要回归到学习自己的兴趣点
并且填补一下基础
首先记录一下这个问题吧
首先我是准备在虚拟机本地搭个sqli-labs来学习sql injection
因为在之前也搭过,所以应该没什么大问题
结果,就出现了一开始点setup databases时没有反应,即没有任何输出,但其他html元素均能正常显示
我这里配置是
ubuntu gnome 15.10
php5
apache2
mysql
简单来说,就是PHP代码根本就没有运行
此时查看网页源码也能看到php代码,其实还有另外一种情况是网页源码中根本就没有显示php代码
分类讨论下
ps:因为我没有学过多少web的内容,所以以下一些概念性的解释不一定正确,最好自己去搜一下,倘若有错误,还请指出。
网页源码根本看不到PHP代码
这里我猜测是因为lamp没有装完整
首先,php要装上php-cgi,CGICommon Gateway Interface
,通过这个借口,php程序可以对服务器和客户端交换信息做一些事情
另外,还有php-cli,这个是用于在命令行运行php脚本的
还有php-gd库,用于处理图像。在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。
另外,要链接数据库,还要装上相应的php的数据库支持,例如php-mysql
倘若还不能解决,可以参考一下这篇解答
http://stackoverflow.com/questions/3555681/why-are-my-php-files-showing-as-plain-text
You’ll need to add this to your server configuration:
1 | AddType application/x-httpd-php .php |
that is assuming you have installed php properly, which may not be the case since it doesn’t work where it normally would immediately after installing.
It is entirely possible that you’ll also have to add the php so/dll to your apache config using a
LoadModule
directive (usually inhttpd.conf
)
网页源码中能看到PHP代码
这个就可以参考这篇解答了
http://askubuntu.com/questions/451708/php-script-not-executing-on-apache-server
Typing:
1 | sudo apt-get install apache2 php5 libapache2-mod-php5 |
will install everything you need and will start the apache server with support for PHP.
To verify that the php module is loaded, type:
1 | a2query -m php5 |
if not enabled, then load with:
1 | sudo a2enmod php5 |
and restart apache:
1 | sudo service apache2 restart |
Update for php7.0, tested on Ubuntu 16.04 and 16.10
Thanks to the comments, I update the answer for php7.
Install:
1 | sudo apt-get install apache2 php7.0 libapache2-mod-php7.0 |
Verify:
1 | a2query -m php7.0 |
Load:
1 | sudo a2enmod php7.0 |
Restart apache:
1 | sudo service apache2 restart |
这个原因似乎是因为apache安装后默认还缺一个php的支持库
因为我就是这个原因,按照上面安装了libapache2-mod-php5后,嗨呀,一切正常了
在配置过程中,apache2的默认根目录是/var/www/html
,并不是以前的/var/www
,当然,这个可以到配置文件中进行设置。
为了测试php代码是否正常执行,可以通过最简单的一个php脚本测试
1 |
|
因为我并没有学过php,对于web服务器的配置也一知半解,所以在这个过程耗费了我好多的时间
不过,感谢网上各种大牛的帮助,也是解决了这个问题。